简介
.xlsx
(Excel Spreadsheet XML)是微软从 Microsoft Office Excel 2007 开始默认使用的一种文件格式的扩展名,该文件格式是一种基于 XML 的压缩文件格式。
QtXlsx 库独立地实现了对 Excel 文件的读写(不需要机器安装微软的 Excel 办公软件),它是由 dbzhang800(GitHub) 开发的。特点如下:
- 可以跨平台使用
- 创建、读取、修改
.xlsx
文档
- 不支持早期的
.xls
文档格式(在我看来这倒不是缺点,丢下历史的包袱会轻松一点)
直接使用源代码的方式
若要将库的源代码直接用在你的工程中当然是没问题的,我一般会在工程的源文件文件夹创建一个第三方支持库文件夹 3rdparty
,把库文件夹解压到其中:
|-- project.pro
|-- ....
|-- 3rdparty\
| |-- qtxlsx\
| |
在项目的 qmake 文件 project.pro
中加入 qtxlsx.pri
文件:
include(3rdparty/qtxlsx/src/xlsx/qtxlsx.pri)
在需要使用该库的源代码中包含头文件 xlsxdocument.h
即可,举一个例子:
#include "xlsxdocument.h"
int main()
{
QXlsx::Document xlsx;
xlsx.write("A1", "Hello Qt!");
xlsx.saveAs("Test.xlsx");
return 0;
}
读和写是最基本的两类操作,而操作的基本对象则是单元格。单元格可以使用列号(英文字)加行号(数字)的字符串形式来访问,上例中的 A1
则表示第 A 列,第 1 行的单元格。也可以使用行、列数字序号的方式来访问:
QString str = xlsx.read(2, 3).toString();
它表示读取第 2 行 3 列单元格(需要注意:行列序号均是从 1 开始的)的内容并以字符串的形式赋值给 str。
使用扩展模块(Add-On modules)的方式
Qt 5 引入了模块化的概念,将众多功能归类到几个模块之中。我们常在 qmake 文件中写的 QT += core gui serialport
表示的就是载入核心、图形、串口三个模块(Modules)。Qt 5 允许我们自定义模块并加入到 Qt 的模块库。以下为模块的构建和安装过程(编译过程需要 Perl 环境):
set path=C:\Qt\Qt5.5.0\5.5\mingw492_32\bin;C:\Qt\Qt5.5.0\Tools\mingw492_32\bin;%path%
qmake
mingw32-make docs install
可以将生成的文档 D:\QtXlsxWriter-master\doc\*
拷贝至 C:\Qt\Qt5.5.0\Docs\Qt-5.5
,便于在需要帮助的时候查看文档。
使用模块时,在工程的 qmake 工程文件中加入模块:
QT += xlsx
在需要使用该库的源代码中包含头文件 QtXlsx
即可,举一个例子:
#include <QtCore>
#include <QtXlsx>
int main()
{
QXlsx::Document xlsx("Test.xlsx");
qDebug() << xlsx.read("A1");
QXlsx::Cell *cell = xlsx.cellAt(1, 1);
qDebug() << cell->value();
return 0;
}
下载地址
Perl: https://www.perl.org/get.html#win32
QtXlsx: https://github.com/dbzhang800/QtXlsxWriter