C++ Excel库使用记录

来源:互联网 发布:CSI网络犯罪调查百度云 编辑:程序博客网 时间:2024/06/05 03:13

1 xlnt 

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


2 xlslib

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

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

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

未完待续...