QT利用xlsx库将TableWidget保存excel文件

本文记录了一次从使用微软COM组件生成Excel文件到改用xlsx库进行数据导出的优化过程。在处理大量数据(如3000*20)时,原始方法效率低下,耗时近5分钟。作者通过切换到xlsx库,显著提高了文件保存速度。代码示例展示了如何设置表头、列宽以及保存文件的操作,为类似场景提供了参考。
摘要由CSDN通过智能技术生成

之前用的微软com组件生成excel文件,在要求机器长时间运行,记录大量数据保存时,com组件效率极低,3000*20的数据量最后保存时花费了将近5分钟。因而转用xlsx导出excel文件。以下为个人保存时的代码,仅作记录用,作为典型保存代码以防忘记。

void record::on_pushButton_data_save_clicked()//数据导出按钮槽函数
{
    //xlsx导出
    QXlsx::Document xlsx;
    QStringList titleList;
    QString filePathName;
    QString defaultFileName = "Test.xls";

    // 设置保存的默认文件名称
        QFileInfo fileinfo(defaultFileName);
    // 获取保存文件路径
        QFileDialog *fileDlg = new QFileDialog(this);
        fileDlg->setWindowTitle("保存文件");
        fileDlg->setAcceptMode(QFileDialog::AcceptSave);
        fileDlg->selectFile(defaultFileName);
        fileDlg->setNameFilter("Excel Files(*.xls *.xlsx)");
        fileDlg->setDefaultSuffix("xls");

        if (fileDlg->exec() == QDialog::Accepted)//点击保存
        {
            filePathName = fileDlg->selectedFiles().at(0);
        }

     
利用QtXlsxQt表格小部件导出为Excel文件,需要遵循以下步骤: 1. 首先,需要在Qt项目添加QtXlsx,可以使用qmake或手动添加文件。 2. 在Qt表格小部件,将数据转换为QXlsx格式。这可以通过循环遍历表格的行和列,并将数据添加到QXlsxWorkbook对象来完成。 例如,以下代码将Qt表格小部件的数据转换为QXlsx格式: ```cpp QXlsx::Document xlsx; for(int i=0; i<tableWidget->rowCount(); i++){ for(int j=0; j<tableWidget->columnCount(); j++){ xlsx.write(i+1, j+1, tableWidget->item(i,j)->text()); } } ``` 3. 然后,将生成的QXlsxWorkbook对象保存Excel文件。可以使用QFileDialog类让用户选择保存位置和文件名。 例如,以下代码将QXlsxWorkbook对象保存Excel文件: ```cpp QString fileName = QFileDialog::getSaveFileName(this, "Save Excel file", "", "Excel Files (*.xlsx)"); if (!fileName.isEmpty()){ xlsx.saveAs(fileName); } ``` 完整的示例代码如下: ```cpp #include <QFileDialog> #include <QXlsx/Document.h> void MainWindow::on_exportButton_clicked() { QXlsx::Document xlsx; for(int i=0; i<tableWidget->rowCount(); i++){ for(int j=0; j<tableWidget->columnCount(); j++){ xlsx.write(i+1, j+1, tableWidget->item(i,j)->text()); } } QString fileName = QFileDialog::getSaveFileName(this, "Save Excel file", "", "Excel Files (*.xlsx)"); if (!fileName.isEmpty()){ xlsx.saveAs(fileName); } } ``` 注意:在使用QtXlsx时,需要将以下代码添加到项目的.pro文件: ``` LIBS += -L/path/to/QtXlsx/lib -lQtXlsx INCLUDEPATH += /path/to/QtXlsx/include ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值