QT tablewidget数据存储到excel中方法

一、QT C++ tablewidget数据存储到excel中方法

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入相关库文件

代码如下(示例):

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QDesktopServices>
#include <QUrl>
#include <QDateTime>
#include <QFileDialog>
#include <QAxObject>
#include <QMessageBox>
#include <QTextEdit>
#include "qdebug.h"

2.在mainwindow.h中加一个信号槽

代码如下(示例):

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();


private slots:
    void on_pushButton_clicked();
    void on_pushButton_clicked2();

private:
    Ui::MainWindow *ui;
    QLabel *lab;
};
#endif // MAINWINDOW_H

3.在mainwindow.cpp中加相应的槽函数

代码如下(示例):

void MainWindow::on_pushButton_clicked2()
{
    QString filePath = QFileDialog::getSaveFileName(this, "Save Data", "untitle",
        "Microsoft Excel 2013(*.xlsx)");
    if (!filePath.isEmpty())
    {
        QAxObject* excel = new QAxObject(this);
        excel->setControl("ket.Application");//wps
        //excel->setControl("Excel.Application") //Excel
        excel->dynamicCall("SetVisible(bool Visible)", false);
        excel->setProperty("DisplayAlerts", false);
        QAxObject* workbooks = excel->querySubObject("WorkBooks");
        workbooks->dynamicCall("Add");
        QAxObject* workbook = excel->querySubObject("ActiveWorkBook");
        QAxObject* worksheets = workbook->querySubObject("Sheets");
        QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);
        int rowCount = ui->tableWidget->rowCount();
        int columnCount = ui->tableWidget->columnCount();
        for (int i = 1; i < rowCount + 1; ++i)
        {
            for (int j = 1; j < columnCount + 1; ++j)
            {
                //QAxObject* Range = worksheet->querySubObject("Cells(int,int)", i+1, j);
                QAxObject* Range = worksheet->querySubObject("Cells(int,int)", i, j);
                Range->dynamicCall("SetValue(const QString &)", ui->tableWidget->item(i-1 , j - 1)->text());
            }
        }
        workbook->dynamicCall("SaveAs(const QString &)", QDir::toNativeSeparators(filePath));
        if (excel != NULL)
        {
            excel->dynamicCall("Quit()");
            delete excel;
            excel = NULL;
        }
        QMessageBox::information(this, QStringLiteral("提示"), "Exporting data successful");
    }
}

总结

以上就是用qt将tablewidget中的数据存储到excle中的方法,大家有疑问可以提问哦

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
QT,使用QTableWidget可以很方便地展示数据,但是当数据量很大时,可能会出现性能问题。因此,需要将数据导出为Excel文件,以便在其他软件进行处理。 以下是导出大数据量的QTableWidgetExcel文件的步骤: 1. 安装Excel导出插件 需要先安装一个导出Excel文件的插件,可以使用QXlsx库。可以在Qt Creator的“项目”菜单找到“添加库”,选择“外部库”,然后选择“Qt Xlsx”,并将其添加到项目。 2. 创建Excel文件 需要创建一个Excel文件,可以使用QXlsx库的QXlsx::Document类来创建。例如: ``` QXlsx::Document xlsx; ``` 3. 将表头写入Excel文件 需要将表头写入Excel文件,可以使用QTableWidget的horizontalHeaderItem()函数获取表头,然后将其写入Excel文件。例如: ``` QStringList headers; for(int i=0; i<tableWidget->columnCount(); i++){ headers << tableWidget->horizontalHeaderItem(i)->text(); } xlsx.writeRow("Sheet1", 1, headers); ``` 4. 将数据写入Excel文件 需要将数据写入Excel文件,可以使用QTableWidget的item()函数获取单元格,然后将其写入Excel文件。例如: ``` for(int i=0; i<tableWidget->rowCount(); i++){ QStringList rowData; for(int j=0; j<tableWidget->columnCount(); j++){ QString value = tableWidget->item(i, j)->text(); rowData << value; } xlsx.writeRow("Sheet1", i+2, rowData); } ``` 5. 保存Excel文件 最后,需要将Excel文件保存到磁盘上。可以使用QXlsx::Document类的save()函数将Excel文件保存到指定路径。例如: ``` xlsx.save("data.xlsx"); ``` 完整的导出大数据量的QTableWidgetExcel文件的代码如下: ``` #include <QTableWidget> #include <QFileDialog> #include <QXlsx/Document.h> void MainWindow::exportToExcel(QTableWidget *tableWidget) { // 创建Excel文件 QXlsx::Document xlsx; // 写入表头 QStringList headers; for(int i=0; i<tableWidget->columnCount(); i++){ headers << tableWidget->horizontalHeaderItem(i)->text(); } xlsx.writeRow("Sheet1", 1, headers); // 写入数据 for(int i=0; i<tableWidget->rowCount(); i++){ QStringList rowData; for(int j=0; j<tableWidget->columnCount(); j++){ QString value = tableWidget->item(i, j)->text(); rowData << value; } xlsx.writeRow("Sheet1", i+2, rowData); } // 保存Excel文件 QString filename = QFileDialog::getSaveFileName(this, tr("Save File"), "", "Excel Files (*.xlsx)"); if(filename != ""){ xlsx.save(filename); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值