c# excel导出png_C/C++编程笔记:一个极度简单的写Excel文件实现

刚工作那会,用的还是VC++6.0,要做大量数据采集,然后写Excel文件。

那时候不像现在有很多工具类可以直接写Excel。

bb66eb286d27647963a37b926a5502b5.png

最开始直接写txt文件,用tab进行空格,然后用Excel打开的时候,就自行分割了。

但是对于有些数据要隔开不同的位置进行填写,计算结果,排版就非常麻烦了。

过后通过MFC加载模块,导出excel的接口,调用并读写excel;

记得当时导出的类很多,有时候使用并不是很方便,好像各种invoke函数。

然后为了方便使用,对其进行封装通用的写数据接口。

后来无意中在网上看见一个C#写Excel的实现,我改成C++了,希望能对大家有所帮助。

当时放在我的CSDN上,准备写一些东西,后来太忙也觉得储备不够,就放弃了。

代码

今天在这里再贴出来,供大家分享。

#include #include typedef unsigned short ushort;class ExcelWriter{private:    FILE *pf;    void WriteArray(const void *value, ushort len)    {        if (pf)            fwrite(value, 1, len, pf);    }public:    ExcelWriter() { pf = 0; }    ~ExcelWriter() { if (pf) fclose(pf); }    void WriteCell(ushort row, ushort col, const char *value)    {        ushort iLen = (ushort)strlen(value);        ushort clData[] = { 0x0204, ushort(8 + iLen), row, col, 0, iLen };        WriteArray(clData, 12);        WriteArray(value, iLen);    }    void WriteCell(ushort row, ushort col, int value)    {        ushort clData[] = { 0x027E, 10, row, col, 0 };        WriteArray(clData, 10);        int iValue = (value << 2) | 2;        WriteArray(&iValue, 4);    }    void WriteCell(ushort row, ushort col, double value)    {        ushort clData[] = { 0x0203, 14, row, col, 0 };        WriteArray(clData, 10);        WriteArray(&value, 8);    }    void WriteCell(ushort row, ushort col)    {        ushort clData[] = { 0x0201, 6, row, col, 0x17 };        WriteArray(clData, 10);    }    bool BeginWrite(const char *fileName)    {        pf = fopen(fileName, "wb+");        printf("pf=%p", pf);        if (!pf) return false;        ushort clBegin[] = { 0x0809, 0x08, 0x0, 0x10, 0x0, 0x0 };        WriteArray(clBegin, 12);        return true;    }    void EndWrite()    {        ushort clEnd[] = { 0x0A, 0x0 };        WriteArray(clEnd, 4);        fclose(pf);        pf = 0;    }};int main(int argc, char **argv){    ExcelWriter writer;    writer.BeginWrite("./demo.xls");    writer.WriteCell(0, 0, "ExcelWriter Demo");    writer.WriteCell(1, 0, "int");    writer.WriteCell(1, 1, 10);    writer.WriteCell(2, 0, "double");    writer.WriteCell(2, 1, 1.5);    writer.WriteCell(3, 0, "empty");    writer.WriteCell(3, 1);    writer.EndWrite();    return 0;}

总结

归根结底也是对二进制文件操作,然后有对应的格式。(嵌入式平台也可以直接使用)

如果觉得我写的还不错的话,求赞,求关注哦!(^▽^)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值