1 #include "qtExcelApi.h"

2

3

4 qtExcelApi::qtExcelApi(void)5 {6

7 }8

9 qtExcelApi::~qtExcelApi()10 {11 }12

13

14 //打开Excel

15 voidqtExcelApi::CreateExcel()16 {17 //连接excel

18 ExcelApp = new QAxObject("Excel.Application");19 //是否可视化excel

20 ExcelApp->dynamicCall("SetVisible(bool Visible)", true);21 //是否弹出警告窗口

22 ExcelApp->setProperty("DisplayAlerts", false);23 //获取工作簿集合

24 ExcelBooks = ExcelApp->querySubObject("WorkBooks");25 //新建一个工作簿

26 ExcelBooks->dynamicCall("Add");27 //获取当前工作簿

28 ExcelBook = ExcelApp->querySubObject("ActiveWorkBook");29 //获取工作表格集合

30 ExcelSheets = ExcelBook->querySubObject("Sheets");31 //获取当前工作表格1,即sheet1

32 ExcelSheet = ExcelSheets->querySubObject("Item(int)", 1);33 }34

35

36 //打开Excel

37 bool qtExcelApi::OpenFile(const char* filePath, booltype)38 {39 //连接excel

40 ExcelApp = new QAxObject("Excel.Application");41 //是否可视化excel

42 ExcelApp->dynamicCall("SetVisible(bool Visible)", type);43 //是否弹出警告窗口

44 ExcelApp->setProperty("DisplayAlerts", false);45 //获取工作簿集合

46 ExcelBooks = ExcelApp->querySubObject("WorkBooks");47 //打开一个工作簿

48 ExcelBooks->dynamicCall("Open(const QString&)", QDir::toNativeSeparators(filePath));49 //获取当前工作簿

50 ExcelBook = ExcelApp->querySubObject("ActiveWorkBook");51 //获取工作表格集合

52 ExcelSheets = ExcelBook->querySubObject("Sheets");53 //获取当前工作表格1,即sheet1

54 ExcelSheet = ExcelSheets->querySubObject("Item(int)", 1);55 return true;56 }57

58

59 //关闭Excel

60 voidqtExcelApi::CloseExcel()61 {62 if (ExcelApp !=NULL)63 {64 ExcelApp->dynamicCall("Quit()");65 deleteExcelApp;66 ExcelApp =NULL;67 }68 }69

70

71 //保存Excel

72 void qtExcelApi::Save(const char*savePath)73 {74 ExcelBook->dynamicCall("SaveAs(const QString &)", QDir::toNativeSeparators(savePath));75 }76

77

78 //获取单元格数据

79 string qtExcelApi::GetRangeData(const int row, const intcolumn)80 {81 QVariant ret;82 QByteArray cdata;83 if (this->ExcelSheet != NULL && !this->ExcelSheet->isNull())84 {85 QAxObject* range = this->ExcelSheet->querySubObject("Cells(int, int)", row, column);86 ret = range->dynamicCall("Value()");87 QString qs =ret.toString();88 cdata =qs.toLocal8Bit();89 deleterange;90 }91 return string(cdata);;92 }93

94

95 //读取整个sheet

96 vectorqtExcelApi::GetUsedRange()97 {98 //读取当前工作表所有数据

99 QAxObject *usedRange = ExcelSheet->querySubObject("UsedRange");100 QVariant var = usedRange->dynamicCall("Value()");101 QVariantList varRows = var.toList();102 const int rowCount =varRows.size();103 QVariantList rowData;104 QByteArray cdata;105 vectorvecUsedRange;106 for (int i = 0; i < rowCount; ++i)107 {108 rowData =varRows[i].toList();109 QString qs = rowData[0].toString();110 cdata =qs.toLocal8Bit();111 vecUsedRange.push_back(string(cdata));112 }113 deleteusedRange;114 returnvecUsedRange;115 }116

117

118 //读取sheet中的一个范围

119 vector qtExcelApi::GetScopeRange(const char* A1, const char*A5)120 {121 QVariantList params;122 params << A1 << A5; //A1至A5的数据123 //读取当前工作表所有数据

124 QAxObject *cell = ExcelSheet->querySubObject("Range(QVariant,QVariant)", params);125 QVariant var = cell->dynamicCall("Value2()");126 QVariantList varRows = var.toList();127 const int rowCount =varRows.size();128 QVariantList rowData;129 QByteArray cdata;130 vectorvecUsedRange;131 for (int i = 0; i < rowCount; ++i)132 {133 rowData =varRows[i].toList();134 QString qs = rowData[0].toString();135 cdata =qs.toLocal8Bit();136 vecUsedRange.push_back(string(cdata));137 }138 deletecell;139 returnvecUsedRange;140 }141

142

143 //当前sheet单元格写入内容

144 void qtExcelApi::SetRangeData(const int row, const int column, const char*Data)145 {146 QAxObject *cell = ExcelSheet->querySubObject("Cells(int,int)", row, column);147 cell->setProperty("Value", Data);148 }149

150

151 //获取所有的工作表数量

152 intqtExcelApi::GetSheetCount()153 {154 int intCount = ExcelSheets->property("Count").toInt();155 returnintCount;156 }157

158

159 //获得当前sheet使用的行数

160 intqtExcelApi::GetRowNum()161 {162 QAxObject *usedRange = ExcelSheet->querySubObject("UsedRange");163 QAxObject *rows = usedRange->querySubObject("Rows");164 int nRows = rows->property("Count").toInt();165 returnnRows;166 }167

168

169 //获得当前sheet使用的列数

170 intqtExcelApi::GetColumnNum()171 {172 QAxObject *usedRange = ExcelSheet->querySubObject("UsedRange");173 QAxObject *columns = usedRange->querySubObject("Columns");174 int nCols = columns->property("Count").toInt();175 returnnCols;176 }177

178

179 //设置当前工作表

180 bool qtExcelApi::SetCurrentSheetByNum(const int&id)181 {182 ExcelSheet = ExcelBook->querySubObject("Worksheets(int)", 2);183 return true;184 }

qaxobject识别html,QT界面开发-QAxObject 读写excel(COM组件)-常用功能封装代码相关推荐

  1. Qt界面开发(各种控件以及图表)

    Qt界面开发(各种控件以及图表) 1.Qt简洁窗体 源代码链接:点击打开链接 2.QT漂亮界面 源代码链接:点击打开链接 3.音乐播放器界面 源代码链接:点击打开链接 4.六宫格界面 源代码链接:点击 ...

  2. C/C++教程 第二十一章 —— Qt界面开发

    文章目录 前言 一.创建项目 二.文件与代码详解 三.初步学习使用UI 四.Qt帮助文档的使用 五.在VS中使用Qt 六.常见错误解决方案 1.VS不识别控件名 2.编译报错或一大堆警告 3.突然无法 ...

  3. 第二章,人脸识别与管理系统界面开发(WinForm界面增强,OpenCV-Python智能识别)

     摘要:通过人脸识别与管理系统界面的开发(WinForm界面增强,OpenCV-Python智能识别),我将以一个用户登录窗体的两种不同登录验证方式向各位同学介绍如何利用WinForm开发出漂亮的应用 ...

  4. 仿微信界面开发的聊天软件和聊天客户端功能介绍

    系统模式:独立系统版本,独立服务器部署,服务器配置:建议 4 核 8G:10M 带宽既可 以下是聊天系统客户端的功能介绍,服务端的功能我会再写一篇文章接着 仿微信聊天开发的聊天软件以及聊天客户端功能介 ...

  5. QT界面开发--基础学习篇一(上)

    一.Qt简单介绍: 1.QT的简单理解: Qt简单的说就是一种可以跨平台的编程语言工具,可以直接类比C语言和C++. 且一般QT的代码逻辑也是以C语言和C++(也可以适用于像JS的语言),可以直观理解 ...

  6. Qt界面开发资料汇总

    Qt VS2017中配置QT5.12开发环境_feitsg的博客-CSDN博客_vs中配置qt Qt下载(多种下载通道+所有版本) -- 下载 在visual studio 2017中配置Qt - h ...

  7. Linux+QT界面开发(含数据库)小结

    今天十一国庆节,过了一个很有意义的国庆节,去了龙岗区图书馆,第一次知道了借的书可以在任意分馆归还!这个切实方便了广大读者.针对Linux应用,特意借阅一本:<linux环境下Qt4图形界面与My ...

  8. Qt界面开发案例:图表主题示例

    Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用.而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmat ...

  9. Qt界面开发之绘制时钟

    #include <QWidget> // QWideet,类是所有用户界面对象的基类 #include<QPaintEvent> // QPaintEivet,类包含绘制事件 ...

最新文章

  1. php-5.4.6-win64,php5.4(64位)+apache2.4(64位)+mysql环境搭建
  2. 【SpringBoot】SpringBoot整合SpringDataJPA及基本使用
  3. Java:这是一份全面 详细的 Synchronized关键字 学习指南
  4. 【Flink】运行Flink 1.6.2 程序偶然报错 Premature end of GET request
  5. cgblib 代理接口原理_Spring5参考指南-AOP代理
  6. [摘录]第5章 谈判原则
  7. eclipse 重构功能。
  8. 特种作业2021年电力电缆考试题库
  9. RubyOnRails with Ajax
  10. DotNetBar的使用—(Office2007界面风格)
  11. 阿里巴巴大数据技术专家岗面试题
  12. 手绘图形识别方法(算法)
  13. 消息认证之SHA散列算法族
  14. oracle角色(role)和权限(privilege)
  15. spark数据挖掘 - 基于 Audioscrobbler 数据集音乐推荐实战
  16. 《传智播客.Net培训.net视频教程》(.net视频asp.net培训传智播客asp.net视频教程开放课程c#视频移动开发winform SQL ADO.Net HTML JavaScript
  17. DE2带的IP核ISP12362报错问题解决 Error:avalon_slave_1_irq: associatedAddressablePoint out of range...
  18. fpu测试_浮点运算单元FPU能给电机控制带来什么?
  19. Android bindService报错:has leaked ServiceConnection ***that was originally bound here
  20. BUUCTF misc 专题(28)荷兰宽带数据泄露

热门文章

  1. java fast math,Java FastMath.ceil方法代碼示例
  2. 详细分析TCP数据的传输过程
  3. html游戏禁止微信浏览器下拉,如何用电脑模拟微信浏览器浏览禁止PC打开的微网站...
  4. 出席全球数字经济大会 第四范式助力打造中国数字经济“北京样板”
  5. python杂记-读取png图像文件头数据
  6. c++17(17)-异常try catch,operator[],vector at
  7. 【机器学习】为什么在信用风险建模中首选树模型?
  8. 【机器学习】一位机器学习高手的个人技术书目
  9. 【深度学习】翻译:60分钟入门PyTorch(三)——神经网络
  10. 【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导)