Qt下Excel操作(8页).doc
《Qt下Excel操作(8页).doc》由会员分享,可在线阅读,更多相关《Qt下Excel操作(8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-Qt下Excel操作-第 8 页Qt之操作Excel (2013-12-06 13:57:20)转载标签:qtqaxobjectqt操作excelqtvbaexcelvba分类:QtVisual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。1994年发行的版本中,即具备了VBA的宏功能。在VBA的参考手册中就可以看到具体函数、属性的用法,Qt操作Excel主要通过QAxObject+ Excel V
2、BA来实现!关于Qt对Excel的操作,网上的资料挺多的,但大多数都是比较基础的,关于插入工作表(至最后一行)、删除工作表、合并/拆分单元格、设置单元格背景色、设置单元格边框色、设置单元格字体(类型、大小、加粗、斜体、下划线、颜色等)、以及设置单元格对齐方式等用法都没有怎么提到,今天就总结一下有关Qt对Excel的操作。Qt操作Excel,无论后缀是xls还是xlsx都可以。如下,是我下载的一个Excel VBA参考手册,内容不算太全!Excel读取为了便于测试,假设已存在一个excel文件,操作内容已经被红色标记出来。如下所示:主要读取内容: 标题 工作表数目 工作表名称 起始行 起始列 行
3、数 列数 单元格内容代码如下: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 : )queryS
4、ubObject(Sheets); /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(); /获取工作表名称QStri
5、ng message = QString(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-quer
6、ySubObject(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 i=row_start; ifor(int j=column_start; jQAxOb
7、ject *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()messagedynamicCall(Open(const QString&), E:test.xlsx);excel.setProperty(C
8、aption, 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
9、 = 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(Nam
10、e, 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, -410
11、8); /左对齐(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);in
12、terior-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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Qt Excel 操作
限制150内