简单示例–图片路径–文件路径替换,表格文字我都换了,,样式还有待提高
/*直接操作word文档,插入表格,字段,图片等*/
QString HeadPath = HeadFilePath + "/" + insdata.RPolitName +"--"+ QDateTime::currentDateTime().toString("yyyy-MM-dd") +".docx";
//创建word文档
QAxObject* pWordWidget = new QAxObject();
bool flag = pWordWidget->setControl("Word.Application");//初始化COM对象, 新建一个word应用程序
if (!flag)
{
flag = pWordWidget->setControl("kwps.Application");//尝试用wps打开
if (!flag)
return;
}
pWordWidget->setProperty("Visible", false);//设置为可见, false则不会在界面打开显示
QAxObject* pDocuments = pWordWidget->querySubObject("Documents");//获取所有的工作文档(返回一个指向QAxObject包含的COM对象)
if (!pDocuments)
return;
QAxObject* pDocument = pDocuments->querySubObject("Add()");
//先创建一个文档
QAxObject* pActiveDocument = pWordWidget->querySubObject("ActiveDocument");//获取当前激活的文档
//插入文字
QAxObject* pSelection = pWordWidget->querySubObject("Selection"); //设置排版方式
//QAxObject* pSelection = pDocument->querySubObject("Range"); //Selection
if (!pSelection)
return;
pSelection->querySubObject("PageSetup")->setProperty("Orientation", "wdOrientPortrait");
pSelection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleTitle");//设置标题
pSelection->querySubObject("Font")->setProperty("Name", ("宋体"));//设置字体
pSelection->querySubObject("Font")->setProperty("Size", 20);//设置字体大小
pSelection->dynamicCall("TypeText(const QString&)", ("222222222"));
pSelection->dynamicCall("InsertAfter(const QString&)", "\n");
pSelection->dynamicCall("TypeParagraph(void)");//插入回车
//第一项 222222222
pSelection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading1");//设置标题1
pSelection->querySubObject("Font")->setProperty("Name", ("宋体"));//设置字体
pSelection->querySubObject("Font")->setProperty("Size", 16);//设置字体大小
pSelection->dynamicCall("TypeText(const QString&)", ("1.222222222"));
pSelection->dynamicCall("TypeParagraph(void)");//插入回车
/*插入表格**************************************以下飞行基本信息表格********************************************************/
//222222222
pSelection->dynamicCall("setStyle(WdBuiltinStyle)", "wdAlignParagraphCenter");//居中
pSelection->querySubObject("Font")->setProperty("Name", ("宋体"));//设置字体
pSelection->querySubObject("Font")->setProperty("Size", 14);//设置字体大小
pSelection->dynamicCall("TypeText(const QString&)", +(" 222222222: "));
pSelection->dynamicCall("TypeParagraph(void)");//插入回车
//插入表格
QAxObject* pRangef = pSelection->querySubObject("Range");
QAxObject* pTablefs = pActiveDocument->querySubObject("Tables");
QAxObject* pTablef = pTablefs->querySubObject("Add(QVariant, int, int)", pRangef->asVariant(), 12, 2); //map.size 行,2列
pTablef->setProperty("Style", "网格型");
pTablef->dynamicCall("AutoFitBehavior(WdAutoFitBehavior)", 2);//表格自动拉伸 0固定 1根据内容调整 2根据窗口调整
pTablef->setProperty("VerticalAlignment", 1);//上下居中
//设置格式
int rows = 0;
int nColumn = 0;
for (rows < 12; rows++;)
{
for (nColumn < 2; nColumn++;)
{
pTablef->querySubObject("Cell(Long, Long)", rows + 1, nColumn)->querySubObject("Range")
->querySubObject("ParagraphFormat")
->dynamicCall("Alignment", "wdAlignParagraphCenter");//居中
pTablef->querySubObject("Cell(Long, Long)", rows + 1, nColumn)->querySubObject("Range")
->querySubObject("Font")
->setProperty("Color"