当前位置: 首页 > 网络知识

Qt Excel读写 QXlsx的安装配置以及测试

时间:2026-01-29 09:27:10

引言
  Qt无自带的库处理Excel 文件,但可通过QAxObject 借助C接口进行Excel的读写1。亦可使用免费的开源第三方库:QXlsx,一个基于Qt库开发的用于读写Microsoft Excel文件的C++库。它提供了一组简单易用的API,可以方便地创建、修改和操作Excel文件。

一、安装配置
1.下载源码,如下图所示,QXlsx就是核心代码,里面还包含了很多示例。

2.创建一个工程,控制台或者带界面的都可以,将QXlsx复制到工程目录下。

3.在.pro文件中添加以下语句,将QXlsx添加到工程中,保存pro文件 (自动会执行qmake 或自己手动执行) :

1 # QXlsx code for Application Qt project 2 QXLSX_PARENTPATH=./QXlsx/ # current QXlsx path is . (. means curret directory) 3 QXLSX_HEADERPATH=./QXlsx/header/ # current QXlsx header path is ./header/ 4 QXLSX_SOURCEPATH=./QXlsx/source/ # current QXlsx source path is ./source/ 5 include(./QXlsx/QXlsx.pri)

二、简单测试

1.创建一个.xlsx文件,对单元格赋值,保存到磁盘上。

1 #include "mainwindoh" 2 #include <QApplication> 3 4 // QXlsx 5 #include "xlsxdocument.h" 6 #include "xlsxchartsheet.h" 7 #include "xlsxcellrange.h" 8 #include "xlsxchart.h" 9 #include "xlsxrichstring.h" 10 #include "xlsxworkbook.h" 11 12 int main(int argc, char *argv[]) 13

2.读取一个.xlsx文件,输出到控制台。(使用官方的ShowConsole代码)
修改官方代码.pro文件,配置添加QXlsx。修改xlsxFileName为刚才生成的Test.xlsx,运行即可。

1 // mainpp 2 3 #include <iostream> 4 #include <vector> 5 6 #include <QCoreApplication> 7 #include <QDebug> 8 #include <QDir> 9 #include <QVariant> 10 #include <QtCore> 11 #include <QtGlobal> 12 using namespace std; 13 14 // [0] include QXlsx headers 15 #include "xlsxcellrange.h" 16 #include "xlsxchart.h" 17 #include "xlsxchartsheet.h" 18 #include "xlsxdocument.h" 19 #include "xlsxrichstring.h" 20 #include "xlsxworkbook.h" 21 using namespace QXlsx; 22 23 #include "fort.hpp" // libfort 24 25 int main(int argc, char *argv[]) 26 39 40 // load new xlsx using new document 41 QXlsx::Document xlsxDoc(xlsxFileName); 42 xlsxDoc.isLoadPackage(); 43 44 int sheetIndexNumber = 0; 45 foreach (QString curretnSheetName, xlsxDoc.sheetNames()) 71 cellValues.push_back(tempValue); 72 } 73 74 for (int ic = 0; ic < clList.size(); ++ic) } 90 91 QString str = var.toString(); 92 93 cellValues[row][col] = str; 94 } 95 96 fort::table fortTable; 97 for (int rc = 0; rc < maxRow; rc++) 102 fortTable << fort::endr; // change to new row 103 } 104 105 std::cout << fortTable.to_string() << std::endl; // display forttable row 106 107 sheetIndexNumber++; 108 } 109 110 return 0; 111 }



上一篇:Siemens 西门子 S7协议及报文格式详解
下一篇:Qt 等待提示框(QPropertyAnimation)
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素