使用Qt在word里面插入图片
# pragma execution_character_set("utf-8")
#include <QtWidgets/QApplication>
#include "word.h"
#include <QAxWidget>
#include <QAxObject>
#include "qvariant.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QAxWidget *word = new QAxWidget("Word.Application", 0, Qt::MSWindowsOwnDC);
word->setProperty("Visible", true);
// 获取所有的工作文档
QAxObject * documents = word->querySubObject("Documents");
// 以文件template.doc为模版新建一个文档
documents->dynamicCall("Add(QString)", QString::fromLocal8Bit("D:/doc/template.doc"));
// 获取当前激活的文档
QAxObject *document = word->querySubObject("ActiveDocument");
// 获取文档中名字为text的标签
/* QAxObject *bookmark_text = document->querySubObject("Bookmarks(QVariant)", "text");
// 选中标签,将字符InsertText插入到标签位置
if (!bookmark_text->isNull()){
bookmark_text->dynamicCall("Select(void)");
bookmark_text->querySubObject("Range")->setProperty("Text", "InsertText");
} */
// 获取文档中名字为pic的标签
QAxObject * bookmark_pic = document->querySubObject("Bookmarks(QVariant)", "pic");
// 选中标签,将图片插入到标签位置
if (!bookmark_pic->isNull())
{
bookmark_pic->dynamicCall("Select(void)");
QAxObject *range;
range = bookmark_pic->querySubObject("Range");
QVariant tmp = range->asVariant();
QList<QVariant>qList;
qList << QVariant("D:/1.png");
qList << QVariant(false);
qList << QVariant(true);
qList << tmp;
QAxObject *Inlineshapes = document->querySubObject("InlineShapes");
Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)", qList);
/* bookmark_pic->dynamicCall("Select(void)");
QAxObject *Inlineshapes = document->querySubObject("InlineShapes");
Inlineshapes->dynamicCall("AddPicture(const QString&)", "D:/1.png"); */
// bookmark_pic->querySubObject("Range")->setProperty("InlineShapes", "InsertText");
}
// 将文件另存为docbyqt.doc,关闭工作文档,退出应用程序
document->dynamicCall("SaveAs (const QString&)", QString("D:/doc/docbyqt.doc"));
document->dynamicCall("Close (boolean)", false);
word->dynamicCall("Quit()");
return a.exec();
}
插入图片的时候就会输出QAxBase: Error calling IDispatch member AddPicture: Exception thrown by server。但是插入文字的时候也没事,请问一下,这是哪有问题