Qt导出数据到EXCEL的两种方式 (*****)

您所在的位置:网站首页 文本生成excel表格 Qt导出数据到EXCEL的两种方式 (*****)

Qt导出数据到EXCEL的两种方式 (*****)

2024-07-16 06:08| 来源: 网络整理| 查看: 265

目录

Qt如何将数据保存成CSV文件(*****)

Qt Tablewidget表格数据的导出和导入

Qt导出数据到EXCEL的两种方式

QT将QTableWidget数据保存至Excel

Qt Tablewidget表格数据导出到 .csv文件 : (*****)(测试 OK)

-------------------------------------------

直接保存为  csv文件,可在 excel中打开,简单方便。

=========================

Qt Tablewidget表格数据的导出和导入 (*****)

https://blog.csdn.net/Fdog_/article/details/113740960 ​

前期准备:

pro文件加入 QT += axcontainer

在头文件加入#include

网上还有写#include

版本不同,可能代码写法不同,自己测试。

一. xls/xlsx文件数据导入TableWidget表格

我们右击导入按钮,转到槽,添加被点击后的代码

QString strData; void MainWindow::on_pushButton_17_clicked() { //首先我们需要创建一个文件选择对话框 QString curPash =QDir::currentPath(); //获取当前路径 QString dlgTitle="选择表格文件"; //xls和xlsx格式的文件都可以,xlsx兼容xls,注意每一种类型后面要加两个分号 QString filter="表格文件(*.xls *.xlsx);;xls文件(*.xls);;xlsx文件(*.xlsx);;所有文件(*.*)"; //创建文件选择对话框 QStringList fileList = QFileDialog::getOpenFileNames(this,dlgTitle,curPash,filter); if(fileList.count()querySubObject("Sheets(int)",1); QAxObject *range; //获取cell的值 QString strVal="hull"; QStringList header; //设置初始表格行列都为0 ui->tableWidget->setRowCount(0); //设置行数为0 ui->tableWidget->setColumnCount(0); //设置列数为0 int count =0; for(int i = 1;itableWidget->setRowCount(ui->tableWidget->rowCount()+1); for(int j = 1;jtableWidget->setColumnCount(ui->tableWidget->columnCount()+1); range = worksheet->querySubObject("Cells(int,int)",i,j); //获取cell的值 strVal = range->dynamicCall("Value2()").toString(); headerquerySubObject("Cells(int,int)",i,j); //获取cell的值 strVal = range->dynamicCall("Value2()").toString(); ui->tableWidget->setItem(i-2,j-1,new QTableWidgetItem(strVal)); } } if(i == 1) { ui->tableWidget->setHorizontalHeaderLabels(header); } } ui->tableWidget->setRowCount(ui->tableWidget->rowCount()-1); } }

二. tableWidget表格数据导出为xls/xlsx文件

我们右击导入按钮,转到槽,添加被点击后的代码

void MainWindow::on_pushButton_23_clicked() { //获取保存路径 QString filepath=QFileDialog::getSaveFileName(this,tr("Save"),".",tr(" (*.xlsx)")); if(!filepath.isEmpty()){ QAxObject *excel = new QAxObject(this); //连接Excel控件 excel->setControl("Excel.Application"); //不显示窗体 excel->dynamicCall("SetVisible (bool Visible)","false"); //不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示 excel->setProperty("DisplayAlerts", false); //获取工作簿集合 QAxObject *workbooks = excel->querySubObject("WorkBooks"); //新建一个工作簿 workbooks->dynamicCall("Add"); //获取当前工作簿 QAxObject *workbook = excel->querySubObject("ActiveWorkBook"); //获取工作表集合 QAxObject *worksheets = workbook->querySubObject("Sheets"); //获取工作表集合的工作表1,即sheet1 QAxObject *worksheet = worksheets->querySubObject("Item(int)",1); //设置表头值 for(int i=1;itableWidget->columnCount()+1;i++) { //设置设置某行某列 QAxObject *Range = worksheet->querySubObject("Cells(int,int)", 1, i); Range->dynamicCall("SetValue(const QString &)",ui->tableWidget->horizontalHeaderItem(i-1)->text()); } //设置表格数据 for(int i = 1;itableWidget->rowCount()+1;i++) { for(int j = 1;jtableWidget->columnCount()+1;j++) { QAxObject *Range = worksheet->querySubObject("Cells(int,int)", i+1, j); Range->dynamicCall("SetValue(const QString &)",ui->tableWidget->item(i-1,j-1)->data(Qt::DisplayRole).toString()); } } workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath workbook->dynamicCall("Close()");//关闭工作簿 excel->dynamicCall("Quit()");//关闭excel delete excel; excel=NULL; qDebug() showMessage(tr("正在导出数据。。。。。。"));     QTextStream out(&file);          //4.获取数据 创建第一行     out


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3