侧边栏壁纸
博主头像
G

  • 累计撰写 81 篇文章
  • 累计创建 48 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

C++读写xls_常见读写excel文件的库/类

G
G
2021-01-21 / 2 评论 / 0 点赞 / 5,585 阅读 / 1,680 字 / 正在检测是否收录...

在C++语言中读写EXCEL表格,有这几种方法:COM方式、ODBC方式、OLE方式、纯底层格式分析方式。
1f3043a99120670228b924a652592ec3.jpg

Basicexcel

使用方法:https://www.cnblogs.com/paullam/p/3705924.html

源码:http://www.codeproject.com/KB/office/BasicExcel.aspx

缺点:

1)、不支持格式化;

2)、不支持公式;

3)、不支持图表;

4)、不支持Unicode UTF-32;

5)、中文支持不好;

CSpreadSheet

中文文档:https://www.oschina.net/question/76782_12420

源码:https://www.codeproject.com/Articles/1636/CSpreadSheet-A-Class-to-Read-and-Write-to-Excel-an

缺点:

1)、CSpreadSheet的构造问题:

CSpreadSheet(CString File, CString SheetOrSeparator, bool Backup = true);

第三个参数默认为true,这个参数为true的原始意义是读取表格时额外做个备份,但是如果你的xls表格不是每列每行都全有数据的时候,它便会严重破坏你的表格数据,这可能是作者的无心之失,实验的数据可能全是满值的结果吧。这个问题想改也很容易,就是删除表格重新写入的过程。所以我构造这个对象的时候最后一个参数为false,我不需要有备份,这样便会省去删除表格又重新写的麻烦了。

2)、CSpreadSheet由于采用的是数据库方式,所以有一个字段数量限制,这是微软的ADO访问数据库的一个限制,最多255个字段,多了就不行了,详情请参照微软核心代码dbcore。

3)、AddRow()函数问题。这个问题也有很多人没有注意到,它的效率极其低下!当然如果添加行数比较少的话,没什么影响,但是当你添加上百行数据的时候,这个函数的问题就凸现出来了。原因就在于AddRow()函数调用了Commit()。

4)、数字类型,字段被转换成字符串。

5)、支持xls,不支持新的xlsx格式。

Xlslib

使用方式:https://blog.csdn.net/byxdaz/article/details/83505475

源码:http://sourceforge.net/projects/xlslib

Libxls

使用方法:https://blog.csdn.net/zhangqiu1989/article/details/8822853

libxls windows版本编译方式

https://blog.csdn.net/qq_21950929/article/details/78655342

源码:http://sourceforge.net/projects/libxls/

xInt

使用方法:https://www.cpp-prog.com/编程/xlnt/

源码:https://github.com/tfussell/xlnt/

window下编译使用cmake生成vc工程。

Libxl

使用方法:https://www.cnblogs.com/pjl1119/p/8059126.html

官网:http://www.libxl.com

文章转载自:地址

0

评论区