Qt中创建excel文件

1、用Qt自带的实现创建excel文件

QFile file(filename);
file.open(QIODevice::ReadWrite);
file.close();

创建是创建了excel文件,但是打开时会提示“打开的文件格式与扩展名指定的格式不一致”

2、用QAxObject来创建文件

QAxObject _excel("Excel.Application");
_excel.setProperty("Visiblie", false);
QAxObject *_workbooks = _excel.querySubObject("WorkBooks");
_workbooks->dynamicCall("Add");
QAxObject *_workbook = _excel.querySubObject("ActiveWorkBook");
_workbook->dynamicCall("SaveAs (const QString&, int, const QString&, const QString&, bool, bool)",
						fileName, 56, QString(""), QString(""), false, false);
_workbook->dynamicCall("Close (Boolean)", false);
_excel.dynamicCall("Quit (void)");

 

保存文件中的56表示创建的文件格式为xls

51表示创建的文件格式为xlsx
 

 3、用QtXlsx创建xlsx文件

QXlsx::Document xlsx;
xlsx.write("A1", "");
xlsx.saveAs("a.xlsx");


<think>嗯,用户想了解如何在Qt创建Excel文件,并且提供了站内的多个引用示例。让我梳理一下这些引用内容的特点:引用[2]和引用[4]展示了使用QAxObject(即COM接口)操作Excel的方案,这种方式需要依赖Office软件,代码比较底层;引用[5]展示了使用第三方库QXlsx的方案,这种方式不需要Office环境,语法更现代化;用户特别强调要创建文件的示例代码,说明ta可能正在开发相关功能,需要具体实现参考。考虑到用户可能是开发者,需要立即可用的代码,我会将两种主流方案都展示出来:对于需要处理复杂Excel特性(如宏、图表)的场景推荐QAxObject方案;对于轻量级需求则推荐更简洁的QXlsx方案。在回复时要注意:1)明确区分两种方案的适用场景;2)关键步骤要添加详细注释,特别是用户容易踩坑的地方(如路径转换);3)补充环境配置等常见问题。用户提供的引用[5]中QXlsx示例缺少头文件包含等关键信息,需要补全完整的最小化实现;引用[2]中提到的路径斜杠转换问题也需要特别提醒。</think> 以下是使用 Qt 创建 Excel 文件的两种主流方案及完整示例代码: --- ### **方案一:使用 QAxObject (COM 接口,需安装 Excel)** #### 核心步骤: 1. 创建 Excel 应用对象 2. 添加工作簿 3. 操作工作表/单元格 4. 保存文件 5. 关闭资源 ```cpp #include <QAxObject> #include <QFileDialog> void createExcel() { // 1. 创建 Excel 应用 QAxObject *excel = new QAxObject("Excel.Application"); excel->setProperty("Visible", false); // 隐藏 Excel 界面 excel->setProperty("DisplayAlerts", false); // 关闭警告提示 // 2. 获取工作簿集合并添加新工作簿 QAxObject *workbooks = excel->querySubObject("Workbooks"); workbooks->dynamicCall("Add"); QAxObject *workbook = excel->querySubObject("ActiveWorkbook"); // 3. 操作第一个工作表 QAxObject *sheets = workbook->querySubObject("Worksheets"); QAxObject *sheet = sheets->querySubObject("Item(int)", 1); // 第一张表 // 4. 写入数据到 A1 单元格 QAxObject *cell = sheet->querySubObject("Range(const QString&)", "A1"); cell->setProperty("Value", "Hello Qt Excel"); // 写入内容 delete cell; // 5. 保存文件(路径需替换斜杠) QString filePath = "C:/example.xlsx"; filePath.replace("/", "\\"); // 关键:路径必须用反斜杠! workbook->dynamicCall("SaveAs(const QString&)", filePath); // 6. 关闭资源 workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); delete excel; // 释放内存 } ``` #### **关键细节**: - 路径处理:`fileName.replace("/", "\\")` [^2] - 保存格式:参数 `56` 对应 `.xlsx` 格式 [^2] - 错误处理:需检查每个对象是否创建成功(如 `if(workbook)` [^3]) --- ### **方案二:使用第三方库 QXlsx (无需 Excel 环境)** #### 配置步骤: 1. 在 `.pro` 文件中添加: ```qmake QT += core gui include(vendor/QXlsx/QXlsx.pri) # 从 GitHub 下载 QXlsx 库 ``` #### 示例代码: ```cpp #include "xlsxdocument.h" void createExcel() { // 1. 创建文档对象 QXlsx::Document xlsx; // 2. 写入数据 xlsx.write("A1", "Product"); xlsx.write("B1", "Price"); xlsx.write("A2", "Qt License"); xlsx.write("B2", 999); // 3. 添加新工作表并切换 xlsx.addSheet("Sales Data"); xlsx.selectSheet("Sales Data"); xlsx.write("A1", QDate::currentDate().toString("yyyy-MM-dd")); // 4. 保存文件 xlsx.saveAs("sales_report.xlsx"); // 自动创建文件 } ``` #### **优势**: - 跨平台支持(Linux/macOS/Windows) - 无需安装 Excel,轻量级实现 [^5] - 支持公式、格式设置等高级操作 --- ### **两种方案对比** | **特性** | **QAxObject** | **QXlsx** | |--------------------|-----------------------------------|----------------------------| | 依赖 Excel 安装 | ✓ (必需) | ✗ | | 跨平台 | ✗ (仅 Windows) | ✓ | | 执行速度 | 较慢(COM 调用开销) | 快(直接生成文件) | | 功能完整性 | ✓ (支持 Excel 全部功能) | ▵ (基础功能完善) | ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值