最近的一个小项目需要从大量的word文档中提取部分文档,进行处理后,再和其它文档中的数据进行匹配。
下面的代码完成了提取word文档中全部字符串的功能。代码是基于windows 平台的,采用的com技术,虽然这个技术已经很古老
了,但是依然可以达到目的。
如果在执行过程中出现一些形如:
"QAxBase: Error calling IDispatch member XXX: Exception thrown by server"
的错误提示,请检查确认office是否激活。
QString filepath;
QString docx_text_info;
filepath=tr("D:\\test.docx");
QAxWidget *m_word = new QAxWidget("Word.Application");
m_word->setProperty("Visible",false);
QAxObject *m_document = m_word->querySubObject("Documents");
QAxObject *m_docx = m_document->querySubObject("Open(const QString&)",filepath);
QAxObject *m_pRange;
m_pRange=m_docx->querySubObject("Range()");
docx_text_info=m_pRange->property("Text").toString();
delete m_pRange;
qDebug()<<docx_text_info;
//m_docx->dynamicCall("SaveAs(const QString&)", filepath);
//m_docx->dynamicCall("Save()");
m_docx->dynamicCall("Close()");
delete m_docx;
m_document->dynamicCall("Close()");
delete m_document;
m_word->clear();
delete m_word;