网站首页 > 博客文章 正文
序
刚工作那会,用的还是VC++6.0,要做大量数据采集,然后写Excel文件。
那时候不像现在有很多工具类可以直接写Excel。
最开始直接写txt文件,用tab进行空格,然后用Excel打开的时候,就自行分割了。
但是对于有些数据要隔开不同的位置进行填写,计算结果,排版就非常麻烦了。
过后通过MFC加载模块,导出excel的接口,调用并读写excel;
记得当时导出的类很多,有时候使用并不是很方便,好像各种invoke函数。
然后为了方便使用,对其进行封装通用的写数据接口。
后来无意中在网上看见一个C#写Excel的实现,我改成C++了,希望能对大家有所帮助。
当时放在我的CSDN上,准备写一些东西,后来太忙也觉得储备不够,就放弃了。
代码
今天在这里再贴出来,供大家分享。
#include <stdio.h>
#include <string.h>
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\n", 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;
}
总结
归根结底也是对二进制文件操作,然后有对应的格式。(嵌入式平台也可以直接使用)
如果觉得我写的还不错的话,求赞,求关注哦!(^▽^)
猜你喜欢
- 2024-09-29 一日一技:使用XlsxWriter模块在Excel工作表中绘制组合图表
- 2024-09-29 Hutool Java工具类库导出Excel,超级简单
- 2024-09-29 有了这个开源工具后,我五点就下班了
- 2024-09-29 pandas写excel报错IllegalCharacterError解决方案
- 2024-09-29 python从入门到实践,文件读写与Excel操作
- 2024-09-29 Python读写EXCEL文件常用方法大全
- 2024-09-29 太棒了!Python和Excel过了这么久终于可以互通了
- 2024-09-29 EasyExcel实现Excel验证标红备注下载
- 2024-09-29 Python 操作 Excel 表格从简单到高级用法
- 2024-09-29 Excel和Python终于可以互通了(python怎么与excel衔接)
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)