一、导出到csv格式,这种格式不用安装office

QString DModel::exportDataToCSV(QString lx)
{QString dtStr="d:/"+lx+"DbToExcel"+QDateTime::currentDateTime().toString("yyyyMMddHHmmss")+".csv";//以下是保存csvQFile file;file.setFileName(dtStr);if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug()<<"open file fail";return "";}QTextStream out(&file);  //创建一个文本流,向保存文件中写入文本//写表头out<<tr("编号")<<",";out<<tr("摄像头名称")<<",";out<<tr("检测点名称")<<",";out<<tr("通道")<<",";out<<tr("直")<<",";out<<tr("左")<<",";out<<tr("右")<<",";out<<tr("时间")<<",";out<<tr("计数")<<",";out<<tr("速度")<<",";out<<tr("车道占有率")<<",";out<<"\n";//设置内容for(int i=0;i<m_map.count();++i){QMap<QString,QVariant> temp=m_map[i];out<<temp["Id"].toString()<<",";out<<temp["cameraName"].toString()<<",";out<<temp["checkPointName"].toString()<<",";out<<temp["channelId"].toString()<<",";out<<temp["containStraight"].toString()<<",";out<<temp["containLeft"].toString()<<",";out<<temp["containRight"].toString()<<",";out<<temp["countTime"].toString()+"\t"<<",";out<<temp["todayCount"].toString()<<",";out<<temp["averageSpeed"].toString()<<",";out<<temp["timeShare"].toString()<<",";out<<"\n";}file.close();return dtStr;
}

二、导出到excel格式,这种格式必须安装office,否则崩溃

QString DModel::exportData(QString lx)
{//流程://1.新建一个excel//2.增加1个Worksheet//3.向Excel单元格中写入数据//4.保存Excel//5.释放Excel//注意事项:使用此功能时,每次都用新建文件的方式,否则会崩溃,即把原有文件删除,新建QString dtStr="d:/"+lx+"DbToExcel"+QDateTime::currentDateTime().toString("yyyyMMddHHmmss")+".xlsx";newExcel(dtStr);// appendSheet("车检数据",1);//新建数据的步骤://1、标题//2、内容//设置标题setCellValue(1,1,"编号");setCellValue(1,2,"摄像头名称");setCellValue(1,3,"检测点名称");setCellValue(1,4,"通道");setCellValue(1,5,"直");setCellValue(1,6,"左");setCellValue(1,7,"右");setCellValue(1,8,"时间");setCellValue(1,9,"计数");setCellValue(1,10,"速度");setCellValue(1,11,"车道占有率");//设置内容for(int i=0;i<m_map.count();++i){QMap<QString,QVariant> temp=m_map[i];setCellValue(i+2,1,temp["Id"].toString());setCellValue(i+2,2,temp["cameraName"].toString());setCellValue(i+2,3,temp["checkPointName"].toString());setCellValue(i+2,4,temp["channelId"].toString());setCellValue(i+2,5,temp["containStraight"].toString());setCellValue(i+2,6,temp["containLeft"].toString());setCellValue(i+2,7,temp["containRight"].toString());setCellValue(i+2,8,temp["countTime"].toString());setCellValue(i+2,9,temp["todayCount"].toString());setCellValue(i+2,10,temp["averageSpeed"].toString());setCellValue(i+2,11,temp["timeShare"].toString());
//      std::cout<<temp["Id"].toString().toStdString()<<temp["countTime"].toString().toStdString()<<std::endl;}saveExcel(dtStr);freeExcel();return dtStr;
}
void DModel::newExcel(const QString &fileName)
{pApplication = new QAxObject();pApplication->setControl("Excel.Application");//连接Excel控件pApplication->dynamicCall("SetVisible(bool)", false);//false不显示窗体pApplication->setProperty("DisplayAlerts", false);//不显示任何警告信息。pWorkBooks = pApplication->querySubObject("Workbooks");QFile file(fileName);file.remove();
//    if (file.exists())
//    {//        pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
//    }
//    else
//    {pWorkBooks->dynamicCall("Add");//新建一个工作簿,如果不新建会崩溃pWorkBook = pApplication->querySubObject("ActiveWorkBook");//获取当前工作簿
//    }pSheets = pWorkBook->querySubObject("Sheets");//获取所有工作表sheetpSheet = pSheets->querySubObject("Item(int)", 1);//获取第一个工作表sheet,从1开始
}
void DModel::appendSheet(const QString &sheetName,int cnt)
{QAxObject *pLastSheet = pSheets->querySubObject("Item(int)", cnt);pSheets->querySubObject("Add(QVariant)", pLastSheet->asVariant());pSheet = pSheets->querySubObject("Item(int)", cnt);pLastSheet->dynamicCall("Move(QVariant)", pSheet->asVariant());pSheet->setProperty("Name", sheetName);
}
void DModel::setCellValue(int row, int column, const QString &value)
{   if(column!=8){QAxObject *pRange = pSheet->querySubObject("Cells(int,int)", row, column);pRange->dynamicCall("Value", value);}else{QAxObject *pRange = pSheet->querySubObject("Cells(int,int)", row, column);pRange->dynamicCall("NumberFormatLocal","yyyy-mm-dd HH::mm:ss");//当为日期时间型数据时,按此格式设置pRange->dynamicCall("Value", value);}
}
void DModel::saveExcel(const QString &fileName)
{pWorkBook->dynamicCall("SaveAs(const QString &)", QDir::toNativeSeparators(fileName));
}
void  DModel::freeExcel()
{if (pApplication != NULL){pApplication->dynamicCall("Quit()");delete pApplication;pApplication = NULL;}
}

秋风写于淄博,业务联系与技术交流:q375172665

Qt导出数据到EXCEL的两种方式相关推荐

  1. Qt导出数据到excel

    Qt导出数据到excel Qt导出数据到excel,方法有很多,Qt里也有自带的axcontainer模块中的#include<QAxObject>类可以导出数据到excel,但是这种方法 ...

  2. [转]导出数据到Excel的几种方法

    [转]导出数据到Excel的几种方法 [转]C#导出到EXCEL     [原] http://community.csdn.net/Expert/topic/4570/4570895.xml?tem ...

  3. [转]asp.net导出数据到Excel的三种方法

    原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...

  4. java 导出excel教程,[Java教程]导出大量数据到Excel的一种方式

    [Java教程]导出大量数据到Excel的一种方式 0 2012-07-09 17:00:11 在Java Web开发中,经常需要导出大量的数据到Excel,使用POI.JXL直接生成Excel,很容 ...

  5. java操作Excel有两种方式 方式1:jxl操作Excel jxl的API

    java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...

  6. DLL中导出函数的声明有两种方式

    本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...

  7. excel下载两种方式(axios和window.open)

    excel下载两种方式 1 第一种 调用window.openmethods:{getDown() {window.open(baseUrl+ "/report/data_excel?cur ...

  8. 数据归一化处理的两种方式

    数据归一化处理的两种方式 import pandas as pd import numpy as np test_data = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3 ...

  9. jsp页面数据加载的两种方式

    JSP数据加载的两种方式 第一种: 三层架构写在controller的页面跳转前面,set到request域中 request.setAttribute("name", list) ...

最新文章

  1. [机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)
  2. Using Preferences(Beginning Android)
  3. wordpress 首页调用文章 不同样式的方法
  4. 10 个 GitHub 上超火和超好看的管理后台模版,后台管理项目有着落了
  5. php提交飞信,php发送飞信消息
  6. java 调用python_Java平台如何调用Python平台?
  7. 仿新浪微博滚动,无文字渐显功能
  8. phpStrom编辑器常用功能教程
  9. JavaScript应用(重点数组)
  10. javascript 中的深复制 和 其实现方法
  11. 【游戏】基于matlab GUI音乐时钟设计【含Matlab源码 1104期】
  12. 计算机键盘和实验原理图,独立键盘的检测原理及程序实现方法
  13. 同步软件UltraCompare 64位 软件及注册机
  14. Spring学习总结01--Spring了解,IOC,DI
  15. 各个认证记录及说明SRRC与CTA认证
  16. PS进阶篇——如何PS软件给公司单位图片加版权水印(六)
  17. Visionpro棋盘格校正
  18. 中国地理知识大全 中国地理知识集锦
  19. 用“番茄工作法”克服拖延症
  20. Arduino uno控制蜂鸣器播放音乐(以《大鱼》为例)

热门文章

  1. ctr多少正常_亚马逊点击率多少算正常?如何提升亚马逊CTR
  2. 因为相信所以看见,既然看见注定坚信《16》
  3. JavaScript:JavaScript特效
  4. 小米扫地机器人 贴膜_智能家居 篇一:小米扫地机器人
  5. 宝藏级UI组件库:FirstUI,微信小程序版+uniapp版双版至V1.5.0,完美支持vue3
  6. report_template
  7. Word文字添加内容覆盖后续内容解决办法
  8. 摄影构图_摄影中的构图是什么?
  9. 三菱PLC编程软件GX works3安装步骤教程【巨详细】附安装包
  10. DDR,GDDR,LPDDR,QDR...谈谈现在主流的内存