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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

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

發(fā)布時(shí)間:2025/1/21 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qaxobject识别html,QT界面开发-QAxObject 读写excel(COM组件)-常用功能封装代码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 #include "qtExcelApi.h"

2

3

4 qtExcelApi::qtExcelApi(void)5 {6

7 }8

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

13

14 //打開(kāi)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 //新建一個(gè)工作簿

26 ExcelBooks->dynamicCall("Add");27 //獲取當(dāng)前工作簿

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

30 ExcelSheets = ExcelBook->querySubObject("Sheets");31 //獲取當(dāng)前工作表格1,即sheet1

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

35

36 //打開(kāi)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 //打開(kāi)一個(gè)工作簿

48 ExcelBooks->dynamicCall("Open(const QString&)", QDir::toNativeSeparators(filePath));49 //獲取當(dāng)前工作簿

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

52 ExcelSheets = ExcelBook->querySubObject("Sheets");53 //獲取當(dāng)前工作表格1,即sheet1

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

58

59 //關(guān)閉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 //獲取單元格數(shù)據(jù)

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 //讀取整個(gè)sheet

96 vectorqtExcelApi::GetUsedRange()97 {98 //讀取當(dāng)前工作表所有數(shù)據(jù)

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中的一個(gè)范圍

119 vector qtExcelApi::GetScopeRange(const char* A1, const char*A5)120 {121 QVariantList params;122 params << A1 << A5; //A1至A5的數(shù)據(jù)123 //讀取當(dāng)前工作表所有數(shù)據(jù)

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 //當(dāng)前sheet單元格寫(xiě)入內(nèi)容

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 //獲取所有的工作表數(shù)量

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

158

159 //獲得當(dāng)前sheet使用的行數(shù)

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 //獲得當(dāng)前sheet使用的列數(shù)

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 //設(shè)置當(dāng)前工作表

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

總結(jié)

以上是生活随笔為你收集整理的qaxobject识别html,QT界面开发-QAxObject 读写excel(COM组件)-常用功能封装代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。