qt读取excel表格数据显示出来
时间: 2025-07-24 14:27:11 浏览: 3
### 如何使用 QT 读取 Excel 文件并显示数据
以下是基于 QAxObject 类的一个示例代码,用于在 Qt 中读取 Excel 文件的内容,并将其打印到控制台或进一步处理。
#### 示例代码
```cpp
#include <QApplication>
#include <QAxObject>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QString filePath = "example.xlsx"; // 设置要读取的Excel文件路径
QAxObject excel("Excel.Application"); // 创建Excel对象
excel.setProperty("Visible", false); // 隐藏Excel窗口
QAxObject* workbooks = excel.querySubObject("Workbooks");
workbooks->dynamicCall("Open(const QString&)", QDir::toNativeSeparators(filePath)); // 打开指定的工作簿
QAxObject* workbook = excel.querySubObject("ActiveWorkbook");
QAxObject* sheets = workbook->querySubObject("Sheets");
int sheetCount = sheets->property("Count").toInt(); // 获取Sheet的数量
qDebug() << "Number of Sheets:" << sheetCount;
for (int i = 1; i <= sheetCount; ++i) { // 遍历每个Sheet
QAxObject* sheet = sheets->querySubObject("Item(int)", i);
QAxObject* usedRange = sheet->querySubObject("UsedRange"); // 获取使用的范围
int rows = usedRange->property("Rows").toInt(); // 行数
int columns = usedRange->property("Columns").toInt(); // 列数
qDebug() << "Sheet Name:" << sheet->property("Name").toString();
qDebug() << "Rows:" << rows;
qDebug() << "Columns:" << columns;
for (int row = 1; row <= rows; ++row) { // 遍历每一行
QStringList rowData;
for (int col = 1; col <= columns; ++col) { // 遍历每一列
QAxObject* cell = sheet->querySubObject("Cells(int,int)", row, col);
QVariant data = cell->dynamicCall("Value()"); // 获取单元格值
if (!data.isNull()) {
rowData.append(data.toString());
} else {
rowData.append(""); // 如果为空,则填充空字符串
}
}
qDebug() << "Row" << row << ":" << rowData.join("\t"); // 输出当前行的数据
}
}
workbook->dynamicCall("Close(bool)", false); // 关闭工作簿
excel.dynamicCall("Quit()"); // 退出Excel应用
return app.exec();
}
```
上述代码实现了通过 `QAxObject` 来打开 Excel 文件,并逐行列举其内容。注意,在实际开发中可能需要调整路径以及错误处理逻辑[^1]。
另外,如果希望将结果显示到 UI 界面而不是终端上,可以参考引用中的项目资源链接[^2],其中提供了完整的解决方案,包括如何解决空白单元格问题以及优化性能的方法。
最后提醒一点,当完成所有操作后务必调用 `Close` 方法释放资源,以免造成内存泄漏或其他异常情况发生[^4]。
#### 注意事项
- 上述代码依赖于 Windows 平台上 COM 接口的支持,因此仅适用于运行在 Windows 的环境中。
- 若要跨平台支持 Linux 或 macOS,请考虑其他库替代方案,例如 libxlsxwriter 或 Pandas(需配合 Python 调用)[^3]。
阅读全文
相关推荐


















