Excel操作
使用QtXlsx库
QtXlsx库不需要安装微软excel程序,可以在支持Qt5平台的任何地方使用。
编译安装
QtXlsx官网地址http://qtxlsx.debao.me/
源码位于github如下路径:https://github.com/dbzhang800/QtXlsxWriter
QtXlsx编译的时候会使用到perl工具,需要提前安装(根据需要安装32位或64位)。
Perl下载地址:https://strawberryperl.com/
编译过程如下:
在mingw命令行下执行以下命令
1:切换到QtXlsx源码所在目录
cd QtXlsx
2:执行qmake生成makefile文件
qmakeqtxlsx.pro
3:执行mingw32-make编译生成可链接库
mingw32-make
4:在QtXlsx源码目录下的lib子目录中会生成对应的链接库文件
集成到主工程
对于Qt工程,在pro工程文件中添加如下信息
引入QtXlsx库。
QtXlsx简单使用
可参考官网相关例子。
QtXlsx使用中遇到的问题
1:无法写入ascii编码小于0x1f之前的控制字符到文件中,例如FS分割符号 “0x1c”等。
触发该问题的原因如下:QtXlsx只支持excel的xlsx格式(本质上是一组xml文件,该部分xml文件的生成是通过Qt的QXmlStreamWriter类完成,QXmlStreamWriter中xml内容写入函数writeCharacters会过滤掉字符串中编码取值在区间(0x1f,0xfffe)之外的字符,从而导致部分控制字符不能正确写入xlsx文件中。
pdf操作
在QT5中,可以通过QPdfWriter生成pdf文件。
基本用法
编码中的基本用法如下:
常见问题
1:由于使用了QPainter,因此在程序最开始,必须初始化一个QApplication对象,否则会出现core dump现象。
2:pdf文件内容写入到具体文件中,经测试验证,应该是在QPdfWriter的析构函数中完成,因此需要确保QPdfWriter的析构函数在QFile关闭前被调用。
对于栈上的变量,可以通过使用大括号“{ }“控制变量生命周期,对于动态new出的对象,可以先delete生成的QPainter对象,然后调用QFile的close接口。
[if !supportLists]3 [endif]Pdf操作
[if !supportLists]3.1 [endif]通过QPdfWriter写pdf文件