1、Qt下Excel操作Qt之操作Excel(2021-12-06 13:57:20)标签:qtqaxobjectqt操作excelqtvbaexcelvba分类:QtVisual Basic for ApplicationsVBA是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。在VBA的参考手册中就可以看到具体函数、属性的用法,Qt操作Excel主要通过QAxObject+ Excel VBA来
2、实现!关于Qt对Excel的操作,网上的资料挺多的,但大多数都是比拟根底的,关于插入工作表至最后一行、删除工作表、合并/拆分单元格、设置单元格背风光、设置单元格边框色、设置单元格字体类型、大小、加粗、斜体、下划线、颜色等、以及设置单元格对齐方式等用法都没有怎么提到,今天就总结一下有关Qt对Excel的操作。Qt操作Excel,无论后缀是xls还是xlsx都可以。如下,是我下载的一个Excel VBA参考手册,容不算太全!Excel读取为了便于测试,假设已存在一个excel文件,操作容已经被红色标记出来。如下所示:主要读取容:标题工作表数目工作表名称起始行起始列行数列数单元格容代码如下:QAxO
3、bject excel(Excel.Application); excel.setProperty(Visible, true); QAxObject *work_books = excel.querySubObject(WorkBooks); work_books-dynamicCall(Open (const QString&), QString(E:/test.xlsx);QVariant title_value = excel.property(Caption); /获取标题qDebug()QString(excel title : )querySubObject(Sheets); /
4、Sheets也可换用WorkSheetsint sheet_count = work_sheets-property(Count).toInt(); /获取工作表数目qDebug()QString(sheet count : )sheet_count; for(int i=1; iquerySubObject(Sheets(int), i); /Sheets(int)也可换用Worksheets(int)QString work_sheet_name = work_sheet-property(Name).toString(); /获取工作表名称QString message = QStrin
5、g(sheet )+QString:number(i, 10)+ QString( name);qDebug()message 0)QAxObject *work_sheet = work_book-querySubObject(Sheets(int), 1); QAxObject *used_range = work_sheet-querySubObject(UsedRange); QAxObject *rows = used_range-querySubObject(Rows); QAxObject *columns = used_range-querySubObject(Columns)
6、; int row_start = used_range-property(Row).toInt(); /获取起始行int column_start = used_range-property(Column).toInt(); /获取起始列int row_count = rows-property(Count).toInt(); /获取行数int column_count = columns-property(Count).toInt(); /获取列数for(int i=row_start; i for(int j=column_start; j QAxObject *cell = work_
7、sheet-querySubObject(Cells(int,int), i, j); QVariant cell_value = cell-property(Value); /获取单元格容QString message = QString(row-)+QString:number(i, 10)+QString(-column-)+QString:number(j, 10)+QString(:);qDebug()messagedynamicCall(Open(const QString&), E:test.xlsx);excel.setProperty(Caption, Qt Excel);Q
8、AxObject *work_book = excel.querySubObject(ActiveWorkBook); QAxObject *work_sheets = work_book-querySubObject(Sheets); /Sheets也可换用WorkSheets/删除工作表删除第一个QAxObject *first_sheet = work_sheets-querySubObject(Item(int), 1);first_sheet-dynamicCall(delete);/插入工作表插入至最后一行int sheet_count = work_sheets-property
9、(Count).toInt(); /获取工作表数目QAxObject *last_sheet = work_sheets-querySubObject(Item(int), sheet_count);QAxObject *work_sheet = work_sheets-querySubObject(Add(QVariant), last_sheet-asVariant();last_sheet-dynamicCall(Move(QVariant), work_sheet-asVariant();work_sheet-setProperty(Name, Qt Sheet); /设置工作表名称/
10、操作单元格第2行第2列QAxObject *cell = work_sheet-querySubObject(Cells(int,int), 2, 2);cell-setProperty(Value, Java C+ C# PHP Perl Python Delphi Ruby); /设置单元格值cell-setProperty(RowHeight, 50); /设置单元格行高cell-setProperty(ColumnWidth, 30); /设置单元格列宽cell-setProperty(HorizontalAlignment, -4108); /左对齐xlLeft:-4131 居中xl
11、Center:-4108 右对齐xlRight:-4152cell-setProperty(VerticalAlignment, -4108); /上对齐xlTop-4160 居中xlCenter:-4108 下对齐xlBottom:-4107cell-setProperty(WrapText, true); /容过多,自动换行/cell-dynamicCall(ClearContents(); /清空单元格容QAxObject* interior = cell-querySubObject(Interior);interior-setProperty(Color, QColor(0, 255
12、, 0); /设置单元格背风光绿色QAxObject* border = cell-querySubObject(Borders);border-setProperty(Color, QColor(0, 0, 255); /设置单元格边框色蓝色QAxObject *font = cell-querySubObject(Font); /获取单元格字体font-setProperty(Name, QStringLiteral(华文彩云); /设置单元格字体font-setProperty(Bold, true); /设置单元格字体加粗font-setProperty(Size, 20); /设置单元格字体大小font-setProperty(Italic, true); /设置单元格字体斜体font-setProperty(Underline, 2); /设置单元格下划线font-setProperty(Color, QColor(255, 0, 0); /设置单元格字体颜色红色/设置单元格容,并合并单元格第5行第3列-第8行第5列QAxObject *cell_5_6 = work_sheet-querySubObject(Cells(int,int), 5, 3);cell_5_6-setProperty(Val
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1