示例代码(将数据从数据库导入到Excel,将数据从Excel导入到数据库):

void slotExportBtn(){QAxObject *excel = new QAxObject("Excel.Application");if(excel->isNull()){if(excel != NULL){excel->dynamicCall("Quit()");delete excel;}QMessageBox::critical(0, tr("error"), tr("Excel Application is not Exist"));return ;}QAxObject *workbooks = NULL;QAxObject *workbook = NULL;QAxObject *worksheets = NULL;QAxObject *worksheet = NULL;excel->dynamicCall("SetVisible(bool)", false);excel->setProperty("DisplayAlerts", false);workbooks = excel->querySubObject("WorkBooks");if(QFile::exists(fileName)){workbook = workbooks->querySubObject("Open(const QString &)", fileName);}else{workbooks->dynamicCall("Add");workbook = excel->querySubObject("ActiveWorkBook");}worksheets = workbook->querySubObject("Sheets");worksheet = worksheets->querySubObject("Item(int)", 1);QAxObject * usedrange = worksheet->querySubObject("UsedRange");//    QAxObject * rows = usedrange->querySubObject("Rows");//    QAxObject * columns = usedrange->querySubObject("Columns");int intRowStart = usedrange->property("Row").toInt();int intColStart = usedrange->property("Column").toInt();//    int intCols = columns->property("Count").toInt();//    int intRows = rows->property("Count").toInt();QAxObject *cell = NULL;QString str;int rowCount = model->rowCount();int colCount = model->columnCount();//    // 清空数据//    for(int i=intRowStart;i <intRowStart + intRows;i++)//    {//        for(int j=intColStart ;j<intColStart+intCols;j++)//        {//            QString a;//            switch (j) {//            case 1: a = "A" + QString::number(i);//                break;//            case 2: a = "B" + QString::number(i);//                break;//            case 3: a = "C" + QString::number(i);//                break;//            case 4: a = "D" + QString::number(i);//                break;//            }//            str = " ";//            cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);//            cell->dynamicCall("SetValue(const QVariant&)", str);//        }//    }//标题行//        QAxObject *cell;cell=worksheet->querySubObject("Cells(int,int)", 1, 1);cell->dynamicCall("SetValue(const QString&)", "地址表");cell->querySubObject("Font")->setProperty("Size", 11);//合并标题行QString cellTitle;cellTitle.append("A1:");cellTitle.append(QChar(3 + 'A'));cellTitle.append(QString::number(1));QAxObject *range = worksheet->querySubObject("Range(const QString&)", cellTitle);range->setProperty("WrapText", true);range->setProperty("MergeCells", true);range->setProperty("HorizontalAlignment", -4108);//xlCenterrange->setProperty("VerticalAlignment", -4108);//xlCenterQString a;a = "A2";cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);cell->dynamicCall("SetValue(const QVariant&)", "id");a = "B2";cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);cell->dynamicCall("SetValue(const QVariant&)", "address");a = "C2";cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);cell->dynamicCall("SetValue(const QVariant&)", "warnmessage");a = "D2";cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);cell->dynamicCall("SetValue(const QVariant&)", "code");// 插入数据for (int i = intRowStart; i < intRowStart + rowCount; i++){for(int j = intColStart; j < intColStart + colCount; j++){QString a;switch (j) {case 1: a = "A" + QString::number(i+2);break;case 2: a = "B" + QString::number(i+2);break;case 3: a = "C" + QString::number(i+2);break;case 4: a = "D" + QString::number(i+2);break;}str = model->record(i-1).value(j-1).toString();cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);cell->dynamicCall("SetValue(const QVariant&)", str);}}//    QString a = "A1";//    cell = worksheet->querySubObject("Range(QVariant, QVariant)",a);//    cell->dynamicCall("SetValue(const QVariant&)", "123456");//    worksheet->dynamicCall(pp.toUtf8());workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(fileName));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。workbook->dynamicCall("Close()");//关闭工作簿excel->dynamicCall("Quit()");//关闭exceldelete workbook;delete workbooks;delete excel;QMessageBox::information(0, tr("success"), tr("1111"));
}void slotImportBtn(){QString strFile = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"",tr("Exel file(*.xls *.xlsx)"));if (strFile.isEmpty()){return;}QVector<QString> arr;   //存储每一行数据QVector<QVector<QString>> array;   //将每行数据汇总,类似于二维数组,但不需要手动定义空间大小,造成内存浪费QAxObject excel("Excel.Application"); //加载Excel驱动excel.setProperty("Visible", false);//不显示Excel界面,如果为true会看到启动的Excel界面QAxObject *work_books = excel.querySubObject("WorkBooks");work_books->dynamicCall("Open (const QString&)", strFile); //打开指定文件QAxObject *work_book = excel.querySubObject("ActiveWorkBook");QAxObject *work_sheets = work_book->querySubObject("Sheets");  //获取工作表QString ExcelName;static int row_count = 0,column_count = 0;int sheet_count = work_sheets->property("Count").toInt();  //获取工作表数目,如下图,有 3 页if(sheet_count > 0){QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", 1); //设置为 获取第一页 数据QAxObject *used_range = work_sheet->querySubObject("UsedRange");QAxObject *rows = used_range->querySubObject("Rows");row_count = rows->property("Count").toInt();  //获取行数QAxObject *column = used_range->querySubObject("Columns");column_count = column->property("Count").toInt();  //获取列数//获取第一行第一列数据ExcelName = work_sheet->querySubObject("Cells(int,int)", 1,1)->property("Value2()").toString();//            QAxObject *range = work_sheet->querySubObject("Cells(int,int)",1,1); //获取cell的值//            QString strVal = range->dynamicCall("Value2()").toString();//获取表格中需要的数据,此处是从第三行第二列获取数据,具体原因看下图理解,根据自己的需求获取信息for (int i =3; i <= row_count; i++) {for (int j = 1; j <= column_count;j++) {//                    QString txt = work_sheet->querySubObject("Cells(int,int)", i,j)->property("Value2()").toString(); //获取单元格内容//                    arr.append(txt);//                    qDebug()<<"lllllllll"<<txt;QAxObject *range = work_sheet->querySubObject("Cells(int,int)",i,j); //获取cell的值QString strVal = range->dynamicCall("Value2()").toString();arr.append(strVal);}array.append(arr);arr.clear();  //将每行数据存储到array后,清空arr,避免下次循环时数据累计;arr.appeng()是添加不是赋值}work_book->dynamicCall("Close(Boolean)", false);  //关闭文件excel.dynamicCall("Quit(void)");  //退出}qDebug()<<"lllllllll"<<array;if(!array.isEmpty()){SqlHelper::insertBlockToWarning(array);}
}

Qt中操作Excel表格读写相关推荐

  1. android jxl.jar 使用,使用jxl.jar在Android中操作Excel表格——重中之重——对隐藏表的处理...

    曾简单了解过C#,将Excel(数据库表)表中的数据导入到C#中,使用C#制作的图形化界面进行对Excel表中数据进行操作. 今天想试试,在Android中导入Excel表格进行操作.在网上查阅资料, ...

  2. python 编辑excel需要什么包_Python 中操作EXCEL表格的包

    今天,马云爸爸又来贡献金句了,比王健林公公一亿一个小目标还高,"一个月挣一二十个亿很难受!!!",作为在传统企业主要为电商部门提供数据分析的数据分析师,体验太深刻了. 双11前后, ...

  3. Qt中操作excel

    最近有一个把检测结果导出到excel中的任务,由于对qt比较熟悉,所以打算使用qt来实现.查了一下,使用qt下自带的QAxObject类,实现还是比较简单的. 首先需要在pro文件中添加axconta ...

  4. pb中操作excel表格函数

    Ole_object.Workbooks.add//新建一个Excel文件 Ole_object.Workbooks.Open("FileName")//打开一个已存在Excel文 ...

  5. 计算机算最大值如何操作,Excel表格中如何通过函数判断数据中的最大值

    Excel表格中如何通过函数判断数据中的最大值 腾讯视频/爱奇艺/优酷/外卖 充值4折起 Excel是我们常用的一款数据处理软件,深受大家的欢迎,是我们学习办公的助手,有的朋友想知道怎么通过函数判断数 ...

  6. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

  7. c语言从excal读取字符串,C语言操作EXCEL文件(读写)

    C语言操作EXCEL文件(读写) 本文主要介绍通过纯C语言进行EXCEL的读写操作:(修改时间2018.08.28,如果运行结果均是0,请看文章最后一节) C语言读操作 C语言写操作 在之前需要使用C ...

  8. python openpyxl操作Excel表格

    原创:未经允许不得转载,转载需标明出处 打算分为两个部分: 第一部分为:操作Excel表格 第二部分为:操作Excel图表 现在发布为第一部分内容 在最近的项目中的使用到了提取Android帧率日志, ...

  9. Python Pandas操作Excel表格文件:创建新表格,追加数据

    前言: python操作excel表格文件的增删读写,一般需要用到的第三方库有xlwt,xlrd.xlrd负责读取excel,xlwt负责写入excel文件.这种操作方法比较繁琐,效率还不错,通俗易懂 ...

最新文章

  1. xgboost 正则项_XGBoost入门系列第一讲
  2. 画一个空心圆_用SolidWorks画一个空心挂钩,这种画法稍微有点麻烦
  3. ios编译与android编译区别是什么,为iOS和Android编译C ++代码(XCode)。 这是真的吗?...
  4. php读取文件和读取redis,PHP结合redis实现大文件去重
  5. u盘往linux考文件过大,U盘拷贝时提示文件过大怎么办,教您如何解决
  6. 使用ama0实现串口通信_“ AMA”是什么意思,以及如何使用它?
  7. java程序员的发展之路和职业规划
  8. C# Winform 窗体美化(十、自定义窗体)
  9. ajax juey,锋利的qjuey-ajax
  10. 1003 Emergency
  11. oracle添加路由,创建持久性(静态)路由
  12. 通用技术和信息技术合格考知识点_通用技术学考复习_重要知识点汇总
  13. 详解c语言main函数、printf函数、scanf函数与va家族
  14. 校园网登录界面打不开,远程计算机或设备不接受链连接
  15. Composing Programs 2.3 Sequence - 02
  16. C# 2010 激活码
  17. 【简洁实用】好用的杀毒软件 【网络安全防护】
  18. 这家创业公司,为什么会在云栖大会上被反复提及?
  19. Java pcm/wav文件转mp3(流的方式)
  20. [示例代码] UG CAM 二次开发创建新的加工坐标系MCS方法,并设置新加工坐标系的位置到当前WCS工作坐标系

热门文章

  1. 2022-2027年中国行车记录仪行业市场全景评估及发展战略规划报告
  2. 《花开半夏》--7 谢幕(2)
  3. ZF2 Session简单使用(Zend\Authentication\Storage\Session.php)
  4. 计算机主机启动不了系统安装系统安装软件,开不了机怎么用u盘重装系统
  5. 重装Windows系统教程(U盘制作+重装系统)
  6. 在线Html转义/反转义工具
  7. 【科技百咖】曾经的网络安全少帅,今天的移动拓客达人
  8. 使用html和css做一个美食详情页
  9. 【行研资料】2021全球媒体发展趋势报告(英文).PDF——附下载
  10. 【完美解决】解决 不允许粘贴复制的问题