网站做优化多少钱,木疙瘩h5制作教程,杭州微信小程序开发公司排名,查找公司信息的网站VBA 简介 Microsoft Office软件通常使用VBA来扩展Windows的应用程序功能#xff0c;Visual Basic for Applications#xff08;VBA#xff09;是一种Visual Basic的一种宏语言。 在VBA的参考手册中就可以看到具体函数、属性的用法#xff0c;Qt操作Excel主要通过 QAxObj…VBA 简介 Microsoft Office软件通常使用VBA来扩展Windows的应用程序功能Visual Basic for ApplicationsVBA是一种Visual Basic的一种宏语言。 在VBA的参考手册中就可以看到具体函数、属性的用法Qt操作Excel主要通过 QAxObject Excel VBA来实现关于Qt对Excel的操作网上的资料挺多的但大多数都是比较基础的关于插入工作表至最后一行、删除工作表、合并/拆分单元格、设置单元格背景色、设置单元格边框色、设置单元格字体类型、大小、加粗、斜体、下划线、颜色等、以及设置单元格对齐方式等用法都没有怎么提到今天就总结一下有关Qt对Excel的操作。Qt操作Excel无论后缀是xls还是xlsx都可以。下图是Excel VBA参考手册内容不算太全 Excel读取
假设已存在一个excel文件
主要读取内容标题工作表数目工作表名称起始行起始列行数列数单元格内容。 QAxObject 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 : )title_value; QAxObject *work_book excel.querySubObject(ActiveWorkBook); QAxObject *work_sheets work_book-querySubObject(Sheets); //Sheets也可换用WorkSheetsint sheet_count work_sheets-property(Count).toInt(); //获取工作表数目qDebug()QString(sheet count : )sheet_count; for(int i1; isheet_count; i) { QAxObject *work_sheet work_book-querySubObject(Sheets(int), i); //Sheets(int)也可换用Worksheets(int)QString work_sheet_name work_sheet-property(Name).toString(); //获取工作表名称
QString message QString(sheet )QString::number(i, 10) QString( name);qDebug()messagework_sheet_name; }if(sheet_count 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); 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 irow_start; i{ for(int jcolumn_start; j{ QAxObject *cell work_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()messagecell_value; } } }
效果如下 Excel增、删、改
主要操作
设置标题插入工作表至最后一行设置工作表名称删除工作表设置单元格内容设置单元格字体类型、大小、加粗、斜体、下划线、颜色等设置单元格对齐方式设置单元格高度、宽度设置单元格背景色、边框色合并/拆分单元格清空单元格
代码如下
QAxObject excel(Excel.Application); excel.setProperty(Visible, true); QAxObject *work_books excel.querySubObject(WorkBooks); work_books-dynamicCall(Open(const QString), E:\\test.xlsx);excel.setProperty(Caption, Qt Excel);QAxObject *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(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); //设置工作表名称//操作单元格第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 居中xlCenter-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, 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(Value, Java); //设置单元格值QAxObject *cell_8_5 work_sheet-querySubObject(Cells(int,int), 8, 5);cell_8_5-setProperty(Value, C);QString merge_cell;merge_cell.append(QChar(3 - 1 A)); //初始列merge_cell.append(QString::number(5)); //初始行merge_cell.append(:);merge_cell.append(QChar(5 - 1 A)); //终止列merge_cell.append(QString::number(8)); //终止行QAxObject *merge_range work_sheet-querySubObject(Range(const QString), merge_cell);merge_range-setProperty(HorizontalAlignment, -4108);
merge_range-setProperty(VerticalAlignment, -4108);merge_range-setProperty(WrapText, true);merge_range-setProperty(MergeCells, true); //合并单元格//merge_range-setProperty(MergeCells, false); //拆分单元格//work_book-dynamicCall(Save()); //保存文件为了对比test与下面的test2文件这里不做保存操作 work_book-dynamicCall(SaveAs(const QString), E:\\test2.xlsx); //另存为另一个文件 work_book-dynamicCall(Close(Boolean), false); //关闭文件excel.dynamicCall(Quit(void)); //退出效果如下 操作前 操作后 到这里很多人也许都在纳闷单元格的宏怎么获取的比如对齐方式居中对齐为什么值是-4108而不是其他值呢当然那不是我随便写的自己可以录制宏然后跟踪。
看下图