C++ Excel库使用记录

发布于:2023-04-27 ⋅ 阅读:(266) ⋅ 点赞:(0)

1 xlnt :地址 xlnt: xlnt是一个现代的C ++库,用于处理内存中的电子表格,并按照ECMA 376第4版的说明从XLSX文件读取/写入

要求标准 C++14,由于公司项目环境为qt +vs2010,环境版本太低不支持,因此未使用,期间查询时,发现网上评价可观,手册和使用教程也教容易找到,以后条件满足时使用。

2 xlslib:xlsLib download | SourceForge.net

2.1 动态链接库项目 xlslib_dll的编译

编译,会出现sheet_notes的错误。sheet_notes 非法重定义,或构造函数不能返回类型。

这个错误的原因是,结构体sheet_notes的类型名称和变量命令相同了。由于C/C++中,结构体可以有构造函数,所以,这两个名称是不能相同的。编译器会将成员变量当成是构造函数,从而报错。

解决办法是,修改其中一个的名字,只要两个不相同就ok。由于成员变量sheet_notes被用到只有3次,而结构体被用到很多次。于是,修改成员变量。

xlslib在window下编译方法_第3张图片

再编译,还会提示一个 function_property 的错误

这是由于使用了大括号初始化成员,导致编译错误

修改为如下代码:

xlslib在window下编译方法_第4张图片

再编译,修改以上两处错误后,在由于项目在“生成事件” --> "后期生成事件"的命令行参数中添加了 以下指令,导致编译错误;

echo $(SolutionDir)bin/Win32_MSVC2010.$(Configuration)\createDLL -M$(Platform) -n$(OutDir)$(ProjectName).map -l$(IntDir) -i$(OutDir)$(ProjectName).lib -W$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2010.$(Configuration)\
$(SolutionDir)bin/Win32_MSVC2010.$(Configuration)\createDLL -M$(Platform) -n$(OutDir)$(ProjectName).map -l$(IntDir) -i$(OutDir)$(ProjectName).lib -W$(SolutionDir)obj/$(ProjectName)_$(Platform)_MSVC2010.$(Configuration)\

删掉上面指令,就可以生成成功,但是由于未导出信息,在使用动态库文件时,会出现链接错误,暂未找到解决方案,也许可以自己添加导出声明;

2.2 静态链接库 xlslib_lib

此版本的此项目加载不成功,在输出窗口看到有个文件“formula.cpp”有两个,删除其中一个后加载成功,修改了动态链接库中的代码问题后,编译成功,经简单测试,可以使用。

3 SPLib 此库不支持读取Excel 

地址:GitHub - zhangf911/SPLib: Cross-Platform C++ Library for Creating Excel, Office 2007 xml Excel and Open Document Spreadsheet

此项目依赖ZLib,在网上找到windows 版本的库文件,导出了lib文件后生成了splib的库,还未测试使用,

由于此库不支持单元格合并,因此未使用;

最终采用2方案

4 libxl:C++ Excel Library to read/write xls/xlsx files - LibXL

5 QXlsx:GitHub - QtExcel/QXlsx: Excel file(*.xlsx) reader/writer library using Qt 5 or 6. Descendant of QtXlsx.


网站公告

今日签到

点亮在社区的每一天
去签到