Qt 生成word文档报告
报表模板:
代码:
//新建一个word应用程序,并设置为不可见
QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC);
word->setProperty("Visible",false);
//获取所有的工作文档
QAxObject *documents = word->querySubObject("Documents");
//以文件bb.doc为模板新建一个文档
documents->dynamicCall("Add(QString)",QString("E:/QtCode/newExample/wordBaoBiao/bb.doc"));
//获取当前**的文档
QAxObject *document = word->querySubObject("ActiveDocument");
//获取文档中的名字为code的标签
QString code = "code";
QAxObject *bookmark_text = document->querySubObject("Bookmarks(QVariant)", code);
//选中标签,将字符insertText插入到标签位置
if(!bookmark_text->isNull())
{
bookmark_text->dynamicCall("Select(void)"); ///选中要选中的区域
bookmark_text->querySubObject("Range")->setProperty("Text","insertText"); ///进行替换操作
}
QAxObject *bookmark_ndvi = document->querySubObject("Bookmarks(QVariant)", "ndvi");
if ( !bookmark_ndvi->isNull())
{
bookmark_ndvi->dynamicCall("Select(void)");
bookmark_ndvi->querySubObject("Range")->setProperty("Text", "ndvi");
}
//获取文档中名字为pic的标签
QAxObject *bookmark_pic = document->querySubObject("Bookmarks(QVariant)", "pic");
//选中标签,将图片插入到标签的位置
if(!bookmark_pic->isNull())
{
bookmark_pic->dynamicCall("Select(void)");
QAxObject *inlineshapes = document->querySubObject("InlineShapes");
inlineshapes->dynamicCall("AddPicture(const QString&)","E:\\123.jpg"); ///路径必须为windo路径格式
}
//将文件另存为docbyqt.doc,关闭工作文档,退出应用程序
document->dynamicCall("SaveAs(const QString&)",QString("E:/testword.doc"));
document->dynamicCall("Close(boolean)",false);
word->dynamicCall("Quit()");
delete bookmark_text;
delete bookmark_pic;
delete document;
delete documents;
delete word;
最后效果图: