QT开发 或者 C++
如何使用QTableWidget读取一个Excel文件?这个Excel文件内包含多个sheet工作表。
如何使用QTableWidget存储一个包含多个sheet工作表的Excel文件?
如何使用QTableWidget存储一个包含多个sheet工作表的Excel文件?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CQ.abc 2023-03-07 16:14关注
要使用C++实现Excel文件的读取和写入,需要使用第三方库。常用的是Qt中的Qt Xlsx和libxl。
使用Qt Xlsx读取Excel文件,需要将Qt Xlsx添加到项目中。以下是一个示例程序,演示如何使用QTableWidget读取Excel文件中的数据:
#include <QApplication> #include <QTableWidget> #include <QtXlsx> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTableWidget table; table.setWindowTitle("Excel Reader"); // 打开Excel文件 Document xlsx("example.xlsx"); // 获取工作表数量 int sheetCount = xlsx.workbook()->sheetCount(); for (int i = 0; i < sheetCount; i++) { // 获取工作表对象 Worksheet *sheet = xlsx.workbook()->sheet(i); // 添加新的标签页 table.insertTab(i, new QWidget(), sheet->sheetName()); // 获取工作表的行数和列数 int rowCount = sheet->dimension().rowCount(); int columnCount = sheet->dimension().columnCount(); // 设置表格的行数和列数 table.widget(i)->setLayout(new QVBoxLayout()); table.widget(i)->layout()->addWidget(new QTableWidget(rowCount, columnCount, &table)); // 循环读取每个单元格的数据并设置到表格中 for (int row = 1; row <= rowCount; row++) { for (int col = 1; col <= columnCount; col++) { // 获取单元格对象 Cell *cell = sheet->cellAt(row, col); // 获取单元格的值 QVariant value = cell->value(); // 设置单元格的值到表格中 QTableWidgetItem *item = new QTableWidgetItem(value.toString()); table.widget(i)->layout()->itemAt(0)->widget()->setItem(row - 1, col - 1, item); } } } table.show(); return a.exec(); }
使用Qt Xlsx写入Excel文件,同样需要将Qt Xlsx添加到项目中。以下是一个示例程序,演示如何使用QTableWidget写入Excel文件中的数据:
#include <QApplication> #include <QTableWidget> #include <QtXlsx> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTableWidget table(3, 3); table.setItem(0, 0, new QTableWidgetItem("A1")); table.setItem(0, 1, new QTableWidgetItem("B1")); table.setItem(0, 2, new QTableWidgetItem("C1")); table.setItem(1, 0, new QTableWidgetItem("A2")); table.setItem(1, 1, new QTableWidgetItem("B2")); table.setItem(1, 2, new QTableWidgetItem("C2")); table.setItem(2, 0, new QTableWidgetItem("A3")); table.setItem(2, 1, new QTableWidgetItem("B3")); table.setItem(2, 2, new QTableWidgetItem("C3")); // 新建Excel文件 Document xlsx; // 添加工作表 xlsx.addSheet("Sheet1"); // 获取工作表对象 Worksheet *sheet = xlsx.currentWorksheet(); // 获取表格的行数和列数 int rowCount = table.row
望采纳🥰🥰🥰
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 这种微信登录授权 谁可以做啊
- ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
- ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
- ¥15 网络设备配置与管理这个该怎么弄
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来