Word文档读取
开发工具与关键技术:QtCreator、C++
作者:何任贤
撰写时间:2020年06月02日
Word文档读取
我们先要在工程文件加入
QT += axcontainer
我们要用到的头文件有
#include
#include
读取word文档基本流程:
- 启动Word进程、获取Word文档集。
- 获取和操作当前选中的段落。
类声明
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void readWord();
private:
QPushButton *writebtn;
QPushButton *readbtn;
QLineEdit *lineedit;
必须要声明的指针
QAxObject *myword; //Word应用程序指针
QAxObject *mydocs; //文档集指针
QAxObject *mydoc; //文档指针
QAxObject *selection; //Selection指针
};
下面是qt读取word文档函数实现
void Dialog::readWord()
{
打开一个Word应用程序
myword = new QAxObject(“Word.Application”);
找到其Documents子对象,代表Word文档集
mydocs = myword->querySubObject("Documents");
获取要读取的word文档的路径。
QString path = QDir::currentPath() + “/myWord.docx”;
path = QDir::toNativeSeparators(path);
打开一个Word文档,这里调用的是Documents对象的open方法
mydocs->dynamicCall("Open(const QVariant&)",QVariant(path));获取当前word文档对象
mydoc= myword->querySubObject("ActiveDocument");这里是把word文档的内容全部选中。
通过不带参数的range方法选中整个文档内容
selection = mydoc->querySubObject("Range()");然后获取选中的word文档内容
QString str = selection->property("Text").toString();lineedit->setText(str);关闭文档
mydoc->dynamicCall("Close()");
delete mydoc;
mydoc = NULL;退出程序
myword->dynamicCall("Quit()");
delete myword;
myword = NULL;QMessageBox::information(this,tr("消息"),str);
}
下面是读取结果