QT 使用第三方库QtXlsx操作Excel表

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

#include “xlsxcellrange.h”
#include “xlsxchart.h”
#include “xlsxrichstring.h”
#include “xlsxworkbook.h”

QXlsx::Document xlsx;
xlsx.write(1, 2, “Hello Qt!”);
xlsx.write(2, 2, QString::fromLocal8Bit(“中文”));
xlsx.saveAs(“Text.xlsx”);


编译运行后,就可以在项目路径看到程序创建的Text.xlsx文件,打开后就可以看到写入的 "Hello Qt!"和"中文".




---



## 三、QtXlsx源码编译成为.lib库使用



### 1. 下载安装Perl



下载安装:**Perl**


下载链接:[https://strawberryperl.com/](https://bbs.csdn.net/topics/618679757)


![](https://img-blog.csdnimg.cn/2b9e5d2860a34563b80c5991c65adc72.png)


**注意,这个是一定要下载安装的,否则编译lib库会编译失败!!!**



下载后默认安装即可


![](https://img-blog.csdnimg.cn/cee95d93b44448b6ab03808fc63de99f.png)



### 2. 编译QtXlsx



打开下载的QtXlsx文件夹,双击打开.pro


![](https://img-blog.csdnimg.cn/9321ba174d6c46a6b94a5e17f0288ad2.png)



根据自己安装的vs版本,选择相应的msvc编译


![](https://img-blog.csdnimg.cn/bbb8e0b7eef242c3bc521a0dd890f481.png)




 打开后直接点击编译


![](https://img-blog.csdnimg.cn/0d876f3c8f9843c1a08c88b794adab83.png)



编译完成后,就可以在相应路径找到编译好的lib库


![](https://img-blog.csdnimg.cn/ed553c11a3c445c191eeb8e7e5e621b1.png)



### 3. 在vs中使用


新建vsQT项目,将include文件夹和Qt5Xlsxd.dll和Qt5Xlsxd.lib拷贝到项目路径中;


将QtXlsxWriter-master文件夹整个拷贝到项目路径中;


![](https://img-blog.csdnimg.cn/a8a5f77214534905a051f2ca142e0040.png)



拷贝之后项目路径文件,下图方框中的就是我们需要拷贝的文件


![](https://img-blog.csdnimg.cn/81c2295940d44515b1b90d01092ef4be.png)



右键项目 - 属性 - C/C++ - 常规 - 附加包含目录,把头文件路径添加进来


![](https://img-blog.csdnimg.cn/f1328db42bd84031a825be4b046630c7.png)



右键项目 - 属性 - 链接器 - 输入 - 附加依赖项,添加Qt5Xlsxd.lib



之后,可以加入头文件



#include “xlsxdocument.h”
#include “xlsxchartsheet.h”
#include “xlsxcellrange.h”
#include “xlsxchart.h”
#include “xlsxrichstring.h”
#include “xlsxworkbook.h”


在构造函数中加入代码



QXlsx::Document xlsx;
xlsx.write(1, 2, "Hello Qt!");
xlsx.write(2, 2, QString::fromLocal8Bit("中文"));
xlsx.saveAs("Text.xlsx");

编译运行,不出意外的话, 在项目路径会一个名为Text.xlsx的文件,双击打开


![](https://img-blog.csdnimg.cn/5caf28fec2434dbaa77d8596d1ccd9c6.png)


数据也已经写入,测试成功! 





---



## 四、QtXlsx



### 1. 知识点


**a. 定义**


QXlsx::Document xlsx;


QXlsx::Document xlsx("Text.xlsx");


**b. 往单元格中写入数据**


write


xlsx.write(2, 2, "中文");         参数一是行,参数二是列,参数三是数据


xlsx.write("C3", "C3");        参数一是对应单元格名字,参数二是数据


**c. 设置行高**


setRowHeight


xlsx.setRowHeight(4, 30);        设置第四行高度为30


**d. 设置列宽**


setColumnWidth


xlsx.setColumnWidth(3, 50);         设置第三列宽度为50


**e. 设置单元格样式**


QXlsx::Format format;


format.setFontColor(Qt::red);                  // 设置字体颜色为红色


format.setFontBold(true);                         // 设置加粗


format.setFontSize(30);                            // 设置字体大小


format.setFontItalic(true);                          // 设置倾斜


format.setFontName("楷体");                     // 设置字体


format.setPatternBackgroundColor(QColor(100, 200, 100));         // 设置单元格背景颜色


format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);      // 设置水平居中,更多参考enum HorizontalAlignment枚举


format.setVerticalAlignment(QXlsx::Format::AlignVCenter);           // 设置垂直居中


format.setBorderColor(QColor(50, 50, 50));                                    // 设置边框颜色


format.setFontUnderline(QXlsx::Format::FontUnderlineDouble);    // 设置双下划线,更多参考enum FontUnderline枚举


format.setFontUnderline(QXlsx::Format::FontUnderlineSingle);      // 设置单下划线


format.setFillPattern(QXlsx::Format::PatternLightUp);                     // 填充方式,更多参考enum FillPattern枚举


xlsx.write("C4", "红色|加粗|30", format);        作为第三个参数


**f. 设置单元格方框**


setBorderStyle


format.setBorderStyle(QXlsx::Format::BorderThin);        更多参考enum BorderStyle枚举


**g. 合并单元格**


mergeCells


xlsx.mergeCells("C4:E6");        参数指定那个单元格区间


**h. 取消合并**


unmergeCells


xlsx.unmergeCells("C4:E6");        参数指定的单元格区间一定是要已经合并的,否则打开xlsx文件报错


**i. 读取单元格中的数据**


read


QString str1 = xlsx.read(1, 1).toString();        指定行列获取


QString str2 = xlsx.read("B2").toString();        指定单元格名字获取


**j. 获得单元格对象**


cellAt


QXlsx::Cell \*cell = xlsx.cellAt("C4");                获取到的是指针对象


QXlsx::Cell \*cell = xlsx.cellAt(1, 1);


cell->value();        可以通过value()函数获取单元格中的值


**k. 添加工作表**


addSheet


xlsx.addSheet("sheet\_2");        添加这一张名为“sheet\_2”的工作表


**l. 工作表重命名**


renameSheet


xlsx.workbook()->renameSheet(1, "sheet\_3");        将索引为1(也就是第二张)的工作表命名为“sheet\_3”


**m. 选择当前工作表**


selectSheet


xlsx.selectSheet("sheet\_3");        选择名为“sheet\_3”的工作表为当前xlsx工作表


**n. 获得所有工作表的名字**


sheetNames  
QStringList sheetList = xlsx.sheetNames();        获取返回的是一个字符串链表


**o. 获取工作簿对象**


workbook


QXlsx::Workbook \*workBook = xlsx.workbook();


**p. 获取当前工作簿的第一张sheet工作表**


QXlsx::Worksheet \*workSheet = static\_cast<QXlsx::Worksheet\*>(workBook->sheet(0));


**q. 获取当前sheet表所使用到的行数**


int row = workSheet->dimension().rowCount();


**r. 获取当前sheet表所使用到的列数**


int colum = workSheet->dimension().columnCount();


**s. 遍历sheet表中有数据的单元格**



for (int i = 0; i < row; i++) {
for (int j = 0; j < colum; j++) {
// 获取单元格
QXlsx::Cell *cell = workSheet->cellAt(i, j); // 读取单元格
if (cell) {
qDebug() << “(” << i << ", " << j << “)\t” << cell->value().toString().trimmed(); // trimmed 去除字符串两侧的空格
}
}
}


**t. 删除单元格数据**


xlsx.write("G5", "");        直接重新设置为空即可


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/8d532ebf816d9d07442855f55a393138.png)
![img](https://img-blog.csdnimg.cn/img_convert/8bbdef5a117fc1c0325c0cc5cb39ab57.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

te("G5", "");        直接重新设置为空即可


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
[外链图片转存中...(img-bSsKWcXN-1715896779671)]
[外链图片转存中...(img-5CtAwGHs-1715896779671)]

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值