访问宇宙 2023-03-07 16:03 采纳率: 80.4%
浏览 45
已结题

如何使用QTableWidget存储一个包含多个sheet工作表的Excel文件?


QT开发 或者 C++

如何使用QTableWidget读取一个Excel文件?这个Excel文件内包含多个sheet工作表。

如何使用QTableWidget存储一个包含多个sheet工作表的Excel文件?
  • 写回答

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
    

    望采纳🥰🥰🥰

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 修改了问题 3月8日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来