日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt tableWidget导入\导出Excel表格 自用

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt tableWidget导入\导出Excel表格 自用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先在.pro文件中添加以下代碼:QT+=axcontainer
代碼是轉載的,找不到源博客鏈接

void excel_01::on_pushButton_clicked() {//導出ui->progressBar->setValue(0); //設置進度條的值為0QString fileName = QFileDialog::getSaveFileName(this,tr("Excle file"),QString("./paper_list.xlsx"),tr("Excel Files(*.xlsx)")); //設置保存的文件名if(fileName != ""){ ui->progressBar->show(); //進度條需要在ui文件中加個progressBar控件ui->progressBar->setValue(10);QAxObject *excel = new QAxObject;if(excel->setControl("Excel.Application")){excel->dynamicCall("SetVisible (bool Visible)",false);excel->setProperty("DisplayAlerts",false);QAxObject *workbooks = excel->querySubObject("WorkBooks"); //獲取工作簿集合workbooks->dynamicCall("Add"); //新建一個工作簿QAxObject *workbook = excel->querySubObject("ActiveWorkBook"); //獲取當前工作簿QAxObject *worksheet = workbook->querySubObject("Worksheets(int)", 1);QAxObject *cell;/*添加Excel表頭數據*/for(int i = 1; i <= ui->tableWidget->columnCount(); i++){cell=worksheet->querySubObject("Cells(int,int)", 1, i);cell->setProperty("RowHeight", 40);cell->dynamicCall("SetValue(const QString&)", ui->tableWidget->horizontalHeaderItem(i-1)->data(0).toString());if(ui->progressBar->value()<=50){ui->progressBar->setValue(10+i*5);}}/*將form列表中的數據依此保存到Excel文件中*/for(int j = 2; j<=ui->tableWidget->rowCount()+1;j++){for(int k = 1;k<=ui->tableWidget->columnCount();k++){cell=worksheet->querySubObject("Cells(int,int)", j, k);if(ui->tableWidget->item(j-2,k-1)!=NULL){cell->dynamicCall("SetValue(const QString&)",ui->tableWidget->item(j-2,k-1)->text()+ "\t");}}if(ui->progressBar->value()<80){ui->progressBar->setValue(50+j*5);}}/*將生成的Excel文件保存到指定目錄下*/workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(fileName)); //保存至fileNameworkbook->dynamicCall("Close()"); //關閉工作簿excel->dynamicCall("Quit()"); //關閉exceldelete excel;excel=NULL;ui->progressBar->setValue(100);if (QMessageBox::question(NULL,QString::fromUtf8("完成"),QString::fromUtf8("文件已經導出,是否現在打開?"),QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes){QDesktopServices::openUrl(QUrl("file:///" + QDir::toNativeSeparators(fileName)));}ui->progressBar->setValue(0);ui->progressBar->hide();}}}void excel_01::on_pushButton_2_clicked() {//導入ui->progressBar->setValue(0); //設置進度條的值為0QString path = QFileDialog::getOpenFileName(this,"open","../","execl(*.xlsx)");//指定父對象(this),“open”具體操作,打開,“../”默認,之后可以添加要打開文件的格式if(path.isEmpty()==false){//文件對象QFile file(path);//打開文件,默認為utf8變量,bool flag = file.open(QIODevice::ReadOnly);if(flag == true)//打開成功{ui->progressBar->show(); //進度條需要在ui文件中加個progressBar控件ui->progressBar->setValue(10);QAxObject *excel = new QAxObject(this);//建立excel操作對象excel->setControl("Excel.Application");//連接Excel控件excel->setProperty("Visible", false);//不顯示窗體看效果excel->setProperty("DisplayAlerts", false);//不顯示警告看效果/*********獲取COM文件的一種方式************/QAxObject *workbooks = excel->querySubObject("WorkBooks");//獲取工作簿(excel文件)集合workbooks->dynamicCall("Open(const QString&)", path);//path至關重要,獲取excel文件的路徑//打開一個excel文件QAxObject *workbook = excel->querySubObject("ActiveWorkBook");QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);//訪問excel中的工作表中第一個單元格QAxObject *usedRange = worksheet->querySubObject("UsedRange");//sheet的范圍/*********獲取COM文件的一種方式************///獲取打開excel的起始行數和列數和總共的行數和列數int intRowStart = usedRange->property("Row").toInt();//起始行數int intColStart = usedRange->property("Column").toInt(); //起始列數QAxObject *rows, *columns;rows = usedRange->querySubObject("Rows");//行columns = usedRange->querySubObject("Columns");//列int intRow = rows->property("Count").toInt();//行數int intCol = columns->property("Count").toInt();//列數//起始行列號//qDebug()<<intRowStart;//qDebug()<<intColStart;//行數和列數//qDebug()<<intRow;//qDebug()<<intCol;int a,b;a=intRow-intRowStart+1,b=intCol-intColStart+1;QByteArray text[a][b];QString exceldata[a][b];int coerow=0,coecol=0;for (int i = intRowStart; i < intRowStart + intRow; i++,coerow++){coecol=0;//務必是要恢復初值的for (int j = intColStart; j < intColStart + intCol; j++,coecol++){auto cell = excel->querySubObject("Cells(Int, Int)", i, j );QVariant cellValue = cell->dynamicCall("value");text[coerow][coecol]=cellValue.toByteArray();//QVariant轉換為QByteArrayexceldata[coerow][coecol]=QString(text[coerow][coecol]);//QByteArray轉換為QStringif(ui->progressBar->value()<=60){ui->progressBar->setValue(10+i*5);}//qDebug()<<exceldata[coerow][coecol]<<coerow<<" "<<coecol;}}ui->tableWidget->setRowCount(a-1);for(int i=1;i<a;++i)for(int j=0;j<b;++j){ui->tableWidget->setItem(i-1, j, new QTableWidgetItem(exceldata[i][j]));if(ui->progressBar->value()<=80){ui->progressBar->setValue(60+i*5);}}workbook->dynamicCall( "Close(Boolean)", false );excel->dynamicCall( "Quit(void)" );delete excel;ui->progressBar->setValue(100);QMessageBox::warning(this,tr("讀取情況"),tr("讀取完成!"),QMessageBox::Yes);ui->progressBar->hide();ui->progressBar->setValue(0);}file.close();} }

總結

以上是生活随笔為你收集整理的Qt tableWidget导入\导出Excel表格 自用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 先锋影音av资源网 | 国产精品第5页 | 中文 欧美 日韩 | 一区二区精品在线 | 超碰男人| 51免费看成人啪啪片 | 好av在线| 少妇xxxx69 | 日韩涩| 亚洲第一在线视频 | 曰韩av | 人妻中文字幕一区二区三区 | 国产外围在线 | 亚洲最新视频 | 色综合色综合色综合 | 黄色激情av | 免费看60分钟黄视频 | 精品黑人 | 国产免费无码一区二区视频 | 777奇米四色 | 日韩啪啪片| 久久影音| 丰满少妇高潮一区二区 | 伊人久久视频 | 免费大片黄在线观看视频网站 | 国产高清一区在线观看 | 久久精品女人毛片国产 | 三级精品在线 | 伦伦影院午夜理伦片 | 午夜在线免费观看 | 永久免费未满 | 亚洲国产午夜 | 日韩爆操 | 黑人干亚洲人 | 成人午夜精品视频 | 午夜婷婷在线观看 | 亚洲精品乱码久久久久久写真 | 午夜时刻免费入口 | 女人特黄大aaaaaa大片 | 777精品| 在线成人黄色 | 91av综合| 国产一二三四五区 | 国产情侣在线视频 | 日本免费精品视频 | 夫妻精品| 国产一级二级毛片 | 开心激情久久 | 中文字幕av在线免费观看 | 青娱乐极品在线 | 日韩福利电影在线观看 | 可以免费看av的网址 | 亚洲最大成人在线 | 七月婷婷综合 | 亚洲激情文学 | 99国产精品欲 | 涩涩视频在线观看免费 | 久久999 | 男人插入女人阴道视频 | 欧美激情视频网址 | 日韩影视在线 | 亚洲国产欧美在线观看 | 超碰在线伊人 | 91在线导航 | 伊人色av| 一级全黄色片 | www.av72| 一个色av | 最污网站在线观看 | 成人高清视频在线观看 | 欧美 国产 综合 | 日本无翼乌邪恶大全彩h | 奇米影视狠狠 | 超碰夫妻| 成人av在线播放网站 | 久久国产精品网站 | 国产又粗又长又黄的视频 | 我们俩电影网mp4动漫官网 | 亚洲dvd | 老司机av影院 | 综合亚洲网 | 手机看片国产1024 | 成人在线观看免费高清 | 天堂√在线| 老熟妇午夜毛片一区二区三区 | 久久综合第一页 | 女人十八毛片嫩草av | 中文区中文字幕免费看 | 日本大胆欧美人术艺术 | 黄色污污视频 | 色综合久久久久综合体桃花网 | av一二三四区 | 在线观视频免费观看 | 波多野结衣乳巨码无在线观看 | 人人草人人射 | 欧美日韩加勒比 | 欧美亚洲日本国产 | 日韩av线上 | ,亚洲人成毛片在线播放 |