最近在做QT操作excel,查了好多资料,最开始使用的是QAxObject,但需要电脑安装office(Excel.Application)或WPS(ket.Application)。软件安装有问题的话,编译会出问题。挺麻烦。
无意间发现了QtXlsx这个东西,介绍说不需要安装excel便可操作。使用后发现挺简单,方便。只是配置有些麻烦,现记录如下。
首先,下载QtXlsx类,地址:https://github.com/dbzhang800/QtXlsxWriter
官网:http://qtxlsx.debao.me 有详细说明。
下面介绍windows的2中使用方法:
第一个方式:添加到模块
1.首先,下载Perl
地址:https://www.perl.org
选择相应的版本,下载activeperl,然后默认安装即可。
2.编译源码
使用qtcreater打开下载的源码,为了编译方便可以仅仅构建src,example和test可以不用构建他。
在构建的时候,可能会有如下的错误,
xlsxzipreader.cpp: In member function ‘void QXlsx::ZipReader::init()’:
xlsxzipreader.cpp:51:66: error: conversion from ‘QVector<QZipReader::FileInfo>’ to non-scalar type ‘QList<QZipReader::FileInfo>’ requested
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList();
这里只需要吧出错的文件添加
#include <QVector>
然后把出错的地方的"QList" 用"QVector" 替换掉重新构建就可以了。
有网友提供了没有错误的源码地址,地址:https://github.com/VSRonin/QtXlsxWriter 本人未试验,具体未知。
3.拷贝文件
构建成功,在你编译的目录下回生成lib文件和需要包含的文件(include)还有一个模块pri文件,如图
接下来就需要将这些文件拷贝到指定的位置,以便Qt可以正常的调用,
1》拷贝上图 include文件下的文件到你的Qt安装目录 D:\Qt\Qt5.9.2\5.9.2\msvc2015_64\include (直接copy,无需修改任何内容,地址换成自己QT安装的相应目录)
2》拷贝上图lib文件夹下 Qt5Xlsxd.lib Qt5Xlsx.lib Qt5Xlsx.prl Qt5Xlsxd.prl 4个文件到你的Qt的lib下 D:\Qt\Qt5.9.2\5.9.2\msvc2015_64\lib
3》 拷贝lib文件夹下的 Qt5Xlsx.dll Qt5Xlsxd.dll 库文件到你的Qt库路径bin下 D:\Qt\Qt5.9.2\5.9.2\msvc2015_64\bin
4》拷贝 mkspecs\modules 文件夹下的qt_lib_xlsx.pri到你的Qt模块下 D:\Qt\Qt5.9.2\5.9.2\msvc2015_64\mkspecs\modules
此处如果不添加的话,在你的Pro文件内写 QT += xlsx 会不识别此模块
4 好了,现在可以跑例子了。
打开源码中demo例子,编译,执行。会在编译文件下看到"Book1.xlsx"和"Book2.xlsx"。打开2个文件会看到如下界面:
5. 完成,以后使用的时候只需要在.pro文件中添加
QT += xlsx
在编程文件中添加
#include <QtXlsx>
便可使用。
第二种方法:直接使用代码。
1.当然还是必须要有perl5环境.
2.建立工程,把代码放到工程同级目录
- |-- project.pro
- |-- ....
- |-- 3rdparty\
- | |-- qtxlsx\
- | |
3. 在项目pro文件里添加
- include(3rdparty/qtxlsx/src/xlsx/qtxlsx.pri)
4. 在main.cpp添加代码
- #include "xlsxdocument.h"
- int main()
- {
- QXlsx::Document xlsx;
- xlsx.write("A1", "Hello Qt!");
- xlsx.saveAs("Test.xlsx");
- return 0;
- }
编译代码就会生成Excel表格了。
同时注意:不用qmake 的话,使用下面宏。