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

之前用的微软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);
        }

        // 保存文件添加后缀名
        fileinfo =  QFileInfo(filePathName);
        if (fileinfo.suffix() != "xls" && fileinfo.suffix() != "xlsx")
        {
            filePathName += ".xls";
        }

        // 设置excel表头(第一行数据)
        titleList <<"信号值1"<<"信号值2"<<"信号值3"<<"信号值4";

        // 设置列宽
        xlsx.setColumnWidth(1, titleList.size());//第一行,20列宽
        for (int i = 0; i < titleList.size(); i++)
        {
            xlsx.write(1, i+1, titleList.at(i));//这里写第一行,第n列数据
            for(int j = 0;j<ui->tableWidget_data->rowCount()-1;j++)
            {
                if(ui->tableWidget_data->item(j+2,i)!=NULL) xlsx.write(j+2,i+1,ui->tableWidget_data->item(j+2,i)->text());
                else xlsx.write(j+2,i+1,"");
            }
        }
        //开始写第n行数据
        //xlsx.write(2,1,"Test1");//第二行第一列为Test1

        // 最后,保存文件
        xlsx.saveAs(filePathName)
}

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值