QT学习:QAxObject对象访问

本文详细介绍了如何使用Qt库来操作Excel和Word的基本步骤。对于Excel,首先启动进程并获取工作簿集,接着获取电子表格集并操作单元格数据。在完成后,关闭工作簿和退出进程。对于Word,启动进程并获取文档集,然后操作当前选中的段落,如写入和读取文本。最后同样需要关闭文档和退出进程。
摘要由CSDN通过智能技术生成

一、操作Excel的基本流程

Qt操作Excel的基本流程如下图:
在这里插入图片描述
(1)启动Excel进程、获取Excel工作簿集。 创建Excel进程使用如下语句:

QAxObject *myexcel = new QAxObject("Excel.Application"); 

通过进程获取Excel工作簿集,语句为:

QAxObject *myworks = myexcel->querySubObject("WorkBooks"); 

其中,myworks是工作簿集的引用,用户可根据需要定义其名称,同样,在程序中也要求引用一致。
有了Excel进程和工作簿集的引用,就可以使用它们对Excel进行一系列文档级别的操作。
(2)获取电子表格集。
每个Excel工作簿中都可以包含若干电子表格(Sheet),通过打开的当前工作簿获取其所有电子表格的程序语句为:

QAxObject *mysheets = workbook->querySubObject("Sheets"); 

在获取了电子表格集后,就可以像操作工作簿文档那样,对其中的表格执行各种操作。
(3)操作单元格及其数据。
对Excel的操作最终要落实到对某个电子表格单元格中数据信息的读写上,在Qt中的Excel单元格同样是作为QAxObject对象来看待的,对它的操作通过其所在表格的QAxObject对象句柄执行,如下:

QAxObject *cell = sheet->querySubObject("Range(QVariant, QVariant)", 单元格编号); 
cell->dynamicCall("SetValue(const QVariant&)", QVariant(字符串)); 

这样,就实现了对Excel各个级别对象的灵活操作和使用。
为避免资源无谓消耗和程序死锁,通常在编程结束时还必须通过语句释放该Excel进程所占据的系统资源,如下:

workbook->dynamicCall("Close()"); //关闭工作簿 
myexcel->dynamicCall("Quit()"); //退出进程

2.操作Word的基本流程
Qt操作Word的基本流程如下:
在这里插入图片描述

(1)启动Word进程、获取Word文档集。
创建Word进程使用如下语句:

QAxObject *myword = new QAxObject("Word.Application"); 

通过进程获取Word文档集,语句为:

QAxObject *mydocs = myword->querySubObject("Documents"); 

有了Word进程和文档集的引用,就可以使用它们对Word文档执行操作。
(2)获取和操作当前选中的段落。
一个Word文档由若干文本段落构成,通过文档句柄可对当前选中的段落执行特定的操作,如下:

QAxObject *paragraph = myword->querySubObject("Selection"); 

下面举两个操作Word文档段落的语句,如下:

paragraph->dynamicCall("TypeText(const QString&)", 字符串); 
//写入文本字符串 
paragraph = document->querySubObject("Range()"); 
//获取文本 
QString str = paragraph->property("Text").toString(); 
//读出文本字符串 

在使用完Word文档之后也要进行释放资源和关闭进程的善后处理,如下:

document->dynamicCall("Close()"); 
//关闭文档 
myword->dynamicCall("Quit()"); 
//退出进程02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值