首先在.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表格 自用相关推荐

  1. Qt tableWidget导入\导出Excel表格

    首先在.pro文件中添加以下代码: CONFIG += \qaxcontainer #excel 接下来就是Excel代码:cpp文件: #include "excelengine.h&qu ...

  2. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  3. java 导入导出excel表格

    java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...

  4. java io导出excel表格_Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  5. 使用最新的poi-4.1.0.jar导入导出Excel表格——读取Excel表格数据用法

    使用最新的poi-4.1.0.jar导入导出Excel表格--读取Excel表格数据用法 其中主要的一点心得就是在switch语句哪里进行读取数据转换时,我看到网上的一些用法都是使用 HSSFCell ...

  6. 解决导入导出Excel表格文字乱码问题

    解决导入导出Excel表格文字乱码问题 参考文章: (1)解决导入导出Excel表格文字乱码问题 (2)https://www.cnblogs.com/minjh/p/12299920.html 备忘 ...

  7. springboot+mybatisplus+thymeleaf导入导出excel表格和制作饼状图,柱状图

    这是我们的项目结构. 我们导入的依赖.  application.yml配置文件. goods实体类 type实体类 1.导出 前端代码: JavaScript代码: 通过这里跳转到后端  导出的工具 ...

  8. POI和EasyExcel导入导出Excel表格

    这里写自定义目录标题 EasyExcel操作Excel表格 一.导入依赖: 二.编写实体类 三.编写测试类 POI操作Excel表格 基本功能: 一.导入依赖 二.测试类 2.1 使用HSSFWork ...

  9. java导出excel float_【Java】导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

最新文章

  1. 数据结构1:单链表反转java代码解释
  2. AJAX-prototype.js实现Ajax
  3. 智能机器人建房子后房价走势_明后年日照房价走势如何?究竟是“上涨”还是下降...
  4. matlab判断电话播键音,MATLAB电话拨号音的合成与识别
  5. 替换Jar包中的一个文件 Replace a file in a JAR
  6. 485有时候从机接收指令没反应_多动症儿童反应慢好几拍?神经递质释放速度太慢就会出现这种问题!科学训练高效提升孩子反应力!...
  7. 用 Python 高效办公|一次写好100个word通知
  8. http://wsj356428476.iteye.com/blog/1655032
  9. 【菜鸟进阶之路】P6367 [COCI2006-2007#6] PRASE - 洛谷
  10. 妖人柴:都移动互联网时代了,为什么还要建网站?
  11. 基于springBoot的港口集装箱码头管理系统
  12. 浏览器野史 UserAgent 列传(上)
  13. SS2H框架搭建,基础上篇
  14. java 二进制 表示负数_java中的负数表示
  15. Exchange 2013管理员账号登录ecp登陆不了
  16. 北京个体户税务申报如何办理?
  17. Android问题解决-部分机型上传图片失败
  18. 新消息,江苏南通8MW屋顶光伏发电啦
  19. 移动宣传舞台车设计及运动仿真(lunwen+开题报告+初稿+cad图纸)
  20. 苹果平板怎么卸载软件_苹果手机需要关闭和卸载一些无用的软件

热门文章

  1. LSGO软件技术团队内部技术交流
  2. Apsara Clouder专项技能认证:实现调用API接口
  3. angular是MVC模式还是MVVM架构模式
  4. UWP开发入门教程备忘
  5. SharePoint REST API - 确定REST端点URL
  6. Oracle客房管理系统论文,[转载]基于WEB的酒店管理系统论文【1】
  7. Python CheckiO 题解系列 丨 博客目录索引
  8. php中设置文件权限的写法,php图片上传,如何设置文件权限
  9. matlab连接mysql教程视频_Matlab建立到Oracle数据库的连接
  10. 【牛客 - 157B】凤凰(树上并查集,dfs)