C++ Excel库使用记录

1 xlnt

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

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

2 xlslib

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

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

5 QXlsx

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是曾经做过的一个项目时写的一个动态,用c++来操作Excel,包括以下功能: //===================================mainly function============================ //FuncName: xls_create //function: create excel server //return value: return 1 if success, otherwise 0 _export bool xls_create(); //FuncName: xls_new_file/xls_new_file2 //function: create an excel file (from a template) //parameter: strTemplate ->excel template file name,eg: "template.xlt" or "d:\teplate.xls" // strFileName ->the file name used to save excel file as,eg: "Temp.xls" // openfile ->1: open excel file after writen it,otherwize don't open it //return value: return the excel fileID which created from template, between 1 and 256 if success, or zero otherwise _export int xls_new_file(char* szTemplate, char* szFileName, int openfile); _export int xls_new_file2(char* szFileName, int openfile); //FuncName: xls_open_file //function: Open an exist excel file //parameter:the file name will to be opened //return value: return the fileID, if open file success,otherwize return 0 _export int xls_open_file(char* szFileName); //FuncName: xls_write_xxx //function: write a double value to xls file //parameter: fileID ->the excel file ID which we will write the value into,between 1 and 256 // sheetID ->the sheet index of the excel file which we will write the value into,between 1 and 256 // crow ->the row index which we will write the value into, not less 1 // ccol ->the column index which we will write the value into, not less 1 // value ->the double value which we will write into excel //Note: if you want to input enter key in excel file,you may use \n in your str //return value: return 1 if success, otherwise 0 _export int xls_write_str(int fileID, int sheetID, int crow, int ccol, char* value); _export int xls_write_dbl(int fileID, int sheetID, int crow, int ccol, double value); _export int xls_write_int(int fileID, int sheetID, int crow, int
### 回答1: C和SQLite是两种完全不同的技术。C是一种通用的编程语言,而SQLite是一种嵌入式数据引擎。 C语言是一种功能强大的编程语言,广泛用于开发各种应用程序。它提供了丰富的和函数,使得开发人员能够灵活地控制计算机的底层资源。通过C语言,我们可以进行低级别的内存操作、文件操作、网络编程等。 SQLite是一种嵌入式数据引擎,可以嵌入到应用程序中,提供数据功能。它是一种轻量级的关系型数据系统,具有快速、可靠、易于使用等特点。SQLite使用简单的SQL语句来管理和操作数据,可以方便地进行数据查询、插入、更新和删除操作。由于其小巧、高效的特性,它被广泛地应用于各种移动设备、嵌入式系统和桌面应用程序中。 Excel是一个常用的电子表格软件,用于处理和分析数据。它提供了丰富的功能,如数据计算、图表绘制、数据筛选和排序等。通过Excel,我们可以方便地进行数据的录入、整理和分析,对大量的数据进行统计和可视化展示。 虽然C和SQLite、Excel都与数据处理有关,但它们之间的关联性不大。C语言可以用于开发与数据或电子表格软件相关的应用程序,在应用程序层面上与SQLite和Excel进行交互。例如,可以使用C语言编写程序从SQLite数据读取数据并在Excel中进行分析和展示。但是,C语言本身并不包含与SQLite或Excel的具体操作有关的功能。要实现与SQLite或Excel的具体操作,我们需要使用特定的或API来处理。 ### 回答2: C sqlite和Excel都是广泛使用的数据管理工具。 首先,C语言是一种广泛使用的编程语言,可以用于开发各种应用程序。C语言提供了SQLite,这是一个轻量级的关系型数据管理系统。SQLite使用单一的磁盘文件来存储整个数据,不需要独立的服务器进程,因此非常适合在嵌入式设备或简单应用程序中使用。C语言与SQLite可实现高效的数据存储、查询、更新和删除。 另一方面,Excel是一种电子表格软件,主要用于数据分析和管理。它提供了一种直观的界面,用户可以通过单元格输入数据、进行公式计算和数据整理。Excel可以用于记录和分析大量数据,包括数值、文本、日期和图表等。它还提供了诸如筛选、排序、函数和宏等功能,使得对数据进行复杂的操作和分析变得更加简便。 相较而言,C sqlite和Excel具有许多不同之处。C sqlite是一种编程工具,可以通过编写代码来实现对数据的操作,而Excel则提供了一个图形化界面,无需编程即可进行数据处理和操作。C sqlite更适用于开发复杂的应用程序,而Excel更适合进行简单且快速的数据分析和管理。 总而言之,C sqlite和Excel都是为了帮助用户管理和处理数据而设计的工具。选择使用哪种工具应根据具体需求和要求来决定,是否需要进行编程,以及对数据处理的复杂度有何要求。 ### 回答3: c是一种编程语言,sqlite则是一种轻量级的嵌入式数据管理系统,而excel是一种常用的电子表格软件。三者在数据操作和数据存储方面有一些不同之处。 c作为一种编程语言,可以通过调用sqlite的API来实现与sqlite数据的连接和操作。通过编写c程序,我们可以创建、读取、更新和删除sqlite数据中的数据。同时,c也提供了一些函数来处理excel文件,可以实现对excel文件的读写和操作。 sqlite是一种嵌入式数据管理系统,与传统的客户端-服务器模式的数据系统不同,它将数据嵌入到应用程序中,不需要额外的服务器进程。使用sqlite,我们可以在本地存储和管理数据,非常适用于移动设备或桌面应用。在c程序中,我们可以使用sqlite的API来执行各种数据操作,如创建表、插入数据、查询数据等。 excel是一种常用的电子表格软件,广泛应用于办公和数据分析领域。它提供了丰富的功能来处理和分析数据,如数据排序、筛选、图表制作等。通过c程序,我们可以使用一些函数来读取和写入excel文件,实现对excel数据的读写和处理。 综上所述,c可以通过sqlite的API来实现与sqlite数据的连接和操作,并且还提供了一些函数来处理excel文件。这使得我们能够在c程序中完成数据操作和excel数据的读写和处理,为数据管理和处理提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值