阡陌 发表于 2023-12-18 22:11:40

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]
查看完整版本: Qt Excel 库之 QtXlsx