1.首先简历一个word模板,*.dat格式的模板,然后在里面编写内容,加上自己的书签。我这里的书签名是 b。
注意:自己电脑上必须装有word
2.源码:
#include <QtWidgets/QWidget>
#include <QtWidgets/QApplication>
#include <QAxWidget>
#include <QAxObject>
#include <QTextCodec>
#include "windows.h"
#include <qt_windows.h>
#include "file.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());//显示中文
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//这个事在书签处添加的内容
QString text = " 验证满足欧标的列车通风系统特性,空调系统布置的合理性,是否满足舒适性要求,同时通过模型试验进一步优化空调送 、回风系统";
//File f;
QAxWidget word("Word.Application"); //调用word组件
word.setProperty("Visible", true); //设置为可见
QAxObject * documents = word.querySubObject("Documents"); //获取所有工作的文档
documents->dynamicCall("Add (QString)",QString::fromLocal8Bit("E:/template.dot"));//以template为模板新建个一个word文档
QAxObject * document = word.querySubObject("ActiveDocument");//激活当前文档
QAxObject*bookmark_code=document->querySubObject("Bookmarks(QVariant)","b");//第二个参数为自己的书签名
if(!bookmark_code->isNull())
{
bookmark_code->dynamicCall("Select(void)");
bookmark_code->querySubObject("Range")->setProperty("Text",text);
}
document->dynamicCall("SaveAs (const QString&)", QString("E:/docbyqt.doc"));//另存为docbyqt.doc
document->dynamicCall("Close (boolean)", false); //关闭工作文档
word.dynamicCall("Quit (void)"); //退出应用程序
return app.exec();
}
这篇博客介绍了如何利用Qt处理Word模板,创建一个*.dat格式的模板文件,内含书签,便于程序动态替换内容。书签名设定为'b',并且要求操作者电脑上已安装Word。


被折叠的 条评论
为什么被折叠?



