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


QT开发 或者 C++

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

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

要使用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

望采纳🥰🥰🥰

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^