最近一个项目需要读写excel,但是qt自带的读写方法效率低,并且PC机器必须安装execl才能使用该COM组件,经过查询发现可以使用Qt5Xlsx.dll,是一个非常好的开源软件库,QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用
Qt5Xlsx.dll配置方法
首先,下载QtXlsx类,地址:gitee.com/little_hu_c…
1.首先,下载Perl5地址:www.perl.org/get.html
下载相应电脑相应的版本
下载好了之后就一直默认安装即可。
安装好了在打开你的Qt(笔者使用的是Qt5.7.2mingw版本)和下载的QtXlsx代码。
2.编译下载好的代码
笔者使用的时候有个bug,在Qt5.7.2上面报错:关于 “QList” 和 “QVector” 转换问题。
编译后生成include,lib,mkspecs文件夹
如果你不了解window下模块添加的方法,请按照下面步骤来。
3.1 : 拷贝上图 include文件下的文件到你的Qt安装目录D:\Qt\Qt5.7.0\5.7\mingw53_32\include (直接copy,无需修改任何内容)
3.2 : 拷贝上图lib文件夹下 Qt5Xlsxd.lib Qt5Xlsx.lib Qt5Xlsx.prl Qt5Xlsxd.prl 4个文件到你的Qt的lib下 D:\Qt\Qt5.7.0\5.7\mingw53_32\lib
3.3 : 拷贝lib文件夹下的 Qt5Xlsx.dll Qt5Xlsxd.dll 库文件到你的Qt库路径下 D:\Qt\Qt5.7.0\5.7\mingw53_32\bin
3.4 : 拷贝 mkspecs\modules 文件夹下的qt_lib_xlsx.pri到你的Qt模块下 D:\Qt\Qt5.7.0\5.7\mingw53_32\mkspecs\modules
此处如果不添加的话,在你的Pro文件内写 QT += xlsx 会不识别此模块
4.pro文件里面加上 QT += xlsx
例子:
#include
void QDataMgr::writeExecl()
{
qDebug()<<"QDataMgr::writeExec";
//![0]
QXlsx::Document xlsx;
//![0]
//![1]
QXlsx::Format blue;
blue.setFontColor(Qt::blue);
QXlsx::Format red;
red.setFontColor(Qt::red);
red.setFontSize(15);
QXlsx::Format bold;
bold.setFontBold(true);
QXlsx::RichString rich;
rich.addFragment("Hello ", blue);
rich.addFragment("Qt ", red);
rich.addFragment("Xlsx", bold);
xlsx.write("B2", rich);
xlsx.workbook()->setHtmlToRichStringEnabled(true);
bool bRet = xlsx.write("B4", "Hello <font color="red">Qt Xlsx");
qDebug()<<"xiaohu 1"<<bRet;
bRet = xlsx.write("B6", "<font color="red">Qt Xlsx");
qDebug()<<"xiaohu 2"<<bRet;
//![1]
//![2]
bRet = xlsx.saveAs("C:\Program Files\vStation Pro(64 bit)\Test1.xlsx");
qDebug()<<"xiaohu 3"<<bRet;
//![2]
QXlsx::Document("C:\Program Files\vStation Pro(64 bit)\Test1.xlsx");
bRet = xlsx.saveAs("C:\Program Files\vStation Pro(64 bit)\Test2.xlsx");
qDebug()<<"xiaohu 4"<<bRet;
}