qaxobject识别html,QT界面开发-QAxObject 读写excel(COM组件)-常用功能封装代码
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组件)-常用功能封装代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html复选框怎么转成数组,在HTML中
- 下一篇: wkwebview html5页面,iO