Qt Excel 库之 QtXlsx
![](https://file.mculoop.com/images/2021/12/01c9b4086829fa54.png)
## 简介
`.xlsx`(Excel Spreadsheet XML)是微软从 Microsoft Office Excel 2007 开始默认使用的一种文件格式的扩展名,该文件格式是一种基于 XML 的压缩文件格式。
QtXlsx 库独立地实现了对 Excel 文件的读写(不需要机器安装微软的 Excel 办公软件),它是由 dbzhang800((https://github.com/dbzhang800/QtXlsxWriter)) 开发的。特点如下:
+ 可以跨平台使用
+ 创建、读取、修改 `.xlsx` 文档
+ 不支持早期的 `.xls` 文档格式(在我看来这倒不是缺点,丢下历史的包袱会轻松一点)
<!--more-->
![](https://file.mculoop.com/images/2021/12/7eb29a4ce90eeb2c.gif)
## 直接使用源代码的方式
若要将库的源代码直接用在你的工程中当然是没问题的,我一般会在工程的源文件文件夹创建一个第三方支持库文件夹 ` 3rdparty `,把库文件夹解压到其中:
```
|-- project.pro
|-- ....
|-- 3rdparty\
| |-- qtxlsx\
| |
```
在项目的 qmake 文件 `project.pro`中加入 `qtxlsx.pri` 文件:
```cpp
include(3rdparty/qtxlsx/src/xlsx/qtxlsx.pri)
```
在需要使用该库的源代码中包含头文件 `xlsxdocument.h` 即可,举一个例子:
```cpp
#include "xlsxdocument.h"
int main()
{
QXlsx::Document xlsx;
xlsx.write("A1", "Hello Qt!");
xlsx.saveAs("Test.xlsx");
return 0;
}
```
读和写是最基本的两类操作,而操作的基本对象则是单元格。单元格可以使用列号(英文字)加行号(数字)的字符串形式来访问,上例中的 ` A1 ` 则表示第 A 列,第 1 行的单元格。也可以使用行、列数字序号的方式来访问:
```cpp
QString str = xlsx.read(2, 3).toString();
```
它表示读取第 2 行 3 列单元格(需要注意:行列序号均是从 1 开始的)的内容并以字符串的形式赋值给 str。
## 使用扩展模块(Add-On modules)的方式
Qt 5 引入了模块化的概念,将众多功能归类到几个模块之中。我们常在 qmake 文件中写的 `QT += core guiserialport` 表示的就是载入核心、图形、串口三个模块(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` 即可,举一个例子:
```cpp
#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>
页:
[1]