qt写入excel
时间: 2025-06-20 09:42:16 浏览: 13
### 使用 Qt 向 Excel 文件写入数据
#### QAxObject 方法
通过 `QAxObject` 可以调用 COM 组件来操作 Excel 文件。这种方法依赖于 Windows 平台上的 Microsoft Office 安装。
以下是基于 `QAxObject` 的示例代码:
```cpp
#include <QApplication>
#include <QAxObject>
#include <QDebug>
void writeExcelUsingQAxObject(const QString &filePath) {
QAxObject excel("Excel.Application");
excel.setProperty("Visible", false);
QAxObject *workbooks = excel.querySubObject("Workbooks");
workbooks->dynamicCall("Add");
QAxObject *activeWorkbook = excel.querySubObject("ActiveWorkbook");
QAxObject *sheets = activeWorkbook->querySubObject("Sheets");
QAxObject *sheet = sheets->querySubObject("Item(int)", 1); // 获取第一个 sheet
sheet->querySubObject("Cells(int,int)", 1, 1)->setProperty("Value", "Name"); // 写入标题
sheet->querySubObject("Cells(int,int)", 1, 2)->setProperty("Value", "Age");
sheet->querySubObject("Cells(int,int)", 2, 1)->setProperty("Value", "Alice"); // 写入数据
sheet->querySubObject("Cells(int,int)", 2, 2)->setProperty("Value", 25);
activeWorkbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(filePath));
activeWorkbook->dynamicCall("Close(Boolean)", false);
excel.dynamicCall("Quit");
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QString filePath = "output_qaxobject.xlsx";
writeExcelUsingQAxObject(filePath);
qDebug() << "Excel file created at:" << filePath;
return 0;
}
```
此方法适用于需要利用 Microsoft Excel 功能的场景,但仅限于 Windows 系统,并且需要安装 Microsoft Office[^1]。
---
#### QXlsx 库方法
如果希望实现跨平台的支持,则可以使用第三方库 `QXlsx` 来完成相同的功能。该库不依赖任何外部软件,因此更加灵活。
以下是基于 `QXlsx` 的示例代码:
```cpp
#include <QCoreApplication>
#include <QXlsx/xlsxdocument.h>
#include <QString>
#include <QDebug>
void writeExcelUsingQXlsx(const QString &filePath) {
QXlsx::Document xlsx;
xlsx.write(1, 1, "Name"); // 写入标题
xlsx.write(1, 2, "Age");
xlsx.write(2, 1, "Alice"); // 写入数据
xlsx.write(2, 2, 25);
if (xlsx.saveAs(filePath)) {
qDebug() << "Excel file saved successfully!";
} else {
qDebug() << "Failed to save the Excel file.";
}
}
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QString filePath = "output_qxlsx.xlsx";
writeExcelUsingQXlsx(filePath);
qDebug() << "Excel file created at:" << filePath;
return 0;
}
```
上述代码展示了如何使用 `QXlsx` 创建并保存一个简单的 Excel 文件。它支持多种操作系统,无需额外依赖项[^2][^3]。
---
### 总结
- 如果目标环境为 Windows 且已安装 Microsoft Office,可以选择更强大的 `QAxObject` 方式。
- 对于跨平台需求或者不需要复杂功能的情况,推荐使用轻量级的 `QXlsx` 库。
阅读全文
相关推荐
















