QAxObject在Word 光标 或 标签 处插入文字、图片、表格、标题1等

QAxObject操作word

#插入word标题1级 2级
链接: [link](https://docs.microsoft.com/en-us/office/vba/api/word.wdbuiltinstyle)

QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	    selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleBodyText");//文本

	    selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading1");//标题1

在这里插入图片描述

#QAxObject在光标处插入

/*
* 排版方式
* 纵行、横行
*/

void WordEngine::setype(bool type)
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	if (type)
	{
		selection->querySubObject("PageSetup")->setProperty("Orientation", "wdOrientLandscape");
	}
	else {
		selection->querySubObject("PageSetup")->setProperty("Orientation", "wdOrientPortrait");
	}
}

/*
* 获取页宽
*/

int WordEngine::pageWidth()
{
	int width;
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return width;
	}
	width = selection->querySubObject("PageSetup")->property("PageWidth").toInt();;
	return width;
}

/*
*设置字号
*/

void WordEngine::setFontSize(int size)
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	selection->querySubObject("Font")->setProperty("Size", size);
}

/*
设置对齐方式
*/

void WordEngine::setAlignment(int index)
{
	QAxObject *selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	if (index == 0)
	{
		selection->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphCenter");
	}
	if (index == 1)
	{
		selection->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphJustify");
	}
	if (index == 2)
	{
		selection->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphRight");
	}
	if (index == 3)
	{
		selection->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphLeft");
	}
}


/*
插入文字
*/

void WordEngine::typeText(QString text, int index, int WdBuiltinStyle, bool bold, int size)
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	setAlignment(index);
	setFontSize(size);
	if (bold)
		selection->querySubObject("Range")->dynamicCall("SetBold(int)", true);
	//if(WdBuiltinStyle==0)
	//	selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleBodyText");
	if(WdBuiltinStyle==1)
	    selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading1");
	else if (WdBuiltinStyle == 2)
		selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading2");
	else if (WdBuiltinStyle == 3)
		selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading3");
	else if (WdBuiltinStyle == 4)
		selection->dynamicCall("setStyle(WdBuiltinStyle)", "wdStyleHeading4");
	selection->dynamicCall("TypeText(const QString&)", text);
}
/*
插入图片
*/

void WordEngine::AddPicture(QString file)
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	setAlignment(0);
	QString filename = file;
	filename.replace("/", "\\");
	QAxObject *Inlineshapes = selection->querySubObject("InlineShapes");
	Inlineshapes->dynamicCall("AddPicture(const QString&)", filename);
	delete Inlineshapes;
}

/*
插入回车
*/

void WordEngine::insertEnter()
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	selection->dynamicCall("TypeParagraph(void)");
}

/*
* 光标移到末尾,跳出单元格
*/
void WordEngine::moveForEnd()
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	QVariantList params;
	params.append(6);
	params.append(0);
	selection->dynamicCall("EndOf(QVariant&, QVariant&)", params).toInt();
}

/*
创建表格
QStringList headList 添加表头
*/

QAxObject* WordEngine::createTable(int row, int column, QStringList headList,bool SetLineStyleHide)
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return false;
	}
	selection->dynamicCall("InsertAfter(QString&)", "\r\n");

	QAxObject *range = selection->querySubObject("Range");
	QAxObject *tables = m_pWorkDocument->querySubObject("Tables");
	QAxObject *table = tables->querySubObject("Add(QVariant,int,int)", range->asVariant(), row, column);

	table->setProperty("Style", "网格型");
	//表格自动拉伸列 0固定  1根据内容调整  2 根据窗口调整
	table->dynamicCall("AutoFitBehavior(WdAutoFitBehavior)", 2);

	//设置表头
	for (int i = 0; i<headList.size(); i++)
	{
		table->querySubObject("Cell(int,int)", 1, i + 1)->querySubObject("Range")->dynamicCall("SetText(QString)", headList.at(i));
		//加粗
		table->querySubObject("Cell(int,int)", 1, i + 1)->querySubObject("Range")->dynamicCall("SetBold(int)", true);
		table->querySubObject("Cell(int,int)", 1, i + 1)->querySubObject("Font")->setProperty("Size", 10);
	}
	if (!SetLineStyleHide)
	{
		for (int i = 1; i <= 6; i++)
		{
			QString str = QString("Borders(-%1)").arg(i);
			QAxObject *borders = table->querySubObject(str.toLatin1().constData());
			borders->dynamicCall("SetLineStyle(int)", 1);
		}
	}
	return table;
}

/*
填充表格
*/

void WordEngine::setCellText(QAxObject *table, int row, int column, QString text)
{
	QAxObject* range = table->querySubObject("Cell(int, int)", row + 1, column + 1)->querySubObject("Range");
	if (range)
	{
		return;
	}

	range->dynamicCall("SetText(QString)", text);
}

/*
表格插入图片
*/
void WordEngine::setAddPicture(QAxObject *table, int row, int column, QString picPath)
{
	QAxObject* range = table->querySubObject("Cell(int, int)", row + 1, column + 1)->querySubObject("Range");
	if (!range)
	{
		return;
	}
	range->querySubObject("InlineShapes")->dynamicCall("AddPicture(const QString&)", picPath);
}

/*
光标跳转,类似表格中的tab
*/

void WordEngine::moveRight()
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	if (!selection)
	{
		return;
	}
	selection->dynamicCall("MoveRight(int)", 1);
}

#QAxObject在标签处插入

/*****标签处添加字符串
******input:(QString)word模板地址,(bool)生成word文档是否可视
******output:
*/
bool WordEngine::Open(QString sFile, bool bVisible)
{
	//新建一个word应用程序
	m_pWord = new QAxObject();
	bool bFlag = m_pWord->setControl("word.Application");
	if (!bFlag)
	{
		return false;
	}
	QObject::connect(m_pWord, SIGNAL(exception(int, QString, QString, QString)),
		this, SLOT(saveLastError(int, QString, QString, QString)));
	m_pWord->setProperty("Visible", bVisible);
	//获取所有的工作文档
	QAxObject *document = m_pWord->querySubObject("Documents");
	if (!document)
	{
		return false;
	}
	//以文件template.dot为模版新建一个文档
	document->dynamicCall("Add(QString)", sFile);
	//获取当前激活的文档
	m_pWorkDocument = m_pWord->querySubObject("ActiveDocument");
	if (m_pWorkDocument)
		m_bIsOpen = true;
	else
		m_bIsOpen = false;

	return m_bIsOpen;
}
/*****标签处添加字符串
******input:(QString)保存地址
******output:
*/
void WordEngine::save(QString sSavePath)
{
	if (m_bIsOpen && m_pWorkDocument)
	{
		if (m_bNewFile) {
			m_pWorkDocument->dynamicCall("Save()");
		}
		else {
			//m_pWorkDocument->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",
			//                           m_sFile,56,QString(""),QString(""),false,false);
			m_pWorkDocument->dynamicCall("SaveAs (const QString&)", sSavePath);
		}
	}
	qDebug() << "save Done.";
}
/*****标签处添加字符串
******input:(bool)是否保存当前文件,(QString)保存地址[必填]
******output:
*/
void WordEngine::close(bool bSave,QString save_path)
{
	if (bSave) {
		save(save_path);
	}
	if (m_pWord) {
		m_pWord->setProperty("DisplayAlerts", true);
	}
	if (m_pWorkDocument) {
		m_pWorkDocument->dynamicCall("Close(bool)", true);
	}
	if (m_pWord) {
		m_pWord->dynamicCall("Quit()");
	}
	if (m_pWorkDocuments)
	{
		delete m_pWorkDocuments;
	}
	if (m_pWord)
	{
		delete m_pWord;
	}
	m_pWorkDocument = NULL;
	m_pWorkDocuments = NULL;
	m_pWord = NULL;

	m_bIsOpen = false;
	m_bNewFile = false;
}
/*****标签处添加字符串
******input:(QString)标签名字,(QString)内容
******output: (bool)
*/
bool WordEngine::replaceText(QString sLabel, QString sText)
{
	if (!m_pWorkDocument) {
		return false;
	}
	//获取文档中名字为sLabel的标签
	QAxObject *pBookmark = m_pWorkDocument->querySubObject("Bookmarks(QString)", sLabel);
	if (pBookmark)
	{
		pBookmark->dynamicCall("Select(void)");
		pBookmark->querySubObject("Range")->setProperty("Text", sText);
		delete pBookmark;
	}
	return true;
}
/***** 插入文本到标签处 【 居中,行距1.5,段后0.5】
******input:(QString)标签名字,(QString)内容,(QString)字体,(int)字体大小 【默认黑体,字号12】
******output: (bool)
*/
bool WordEngine::replaceTextStyle(QString sLabel, QString sText, QString FontName, int size)
{
	if (!m_pWorkDocument) {
		return false;
	}
	//获取文档中名字为sLabel的标签
	QAxObject *pBookmark = m_pWorkDocument->querySubObject("Bookmarks(QString)", sLabel);
	if (pBookmark)
	{

		pBookmark->dynamicCall("Select(void)");

		QAxObject *selection = m_pWord->querySubObj## 标题ect("Selection");//设置字体FontName
		selection->dynamicCall("InsertAfter(QString&)", "\r\n");//不能删除,否则会出错
		selection->querySubObject("Range")->querySubObject("Font")->setProperty("Size", size);//设置字体大小:小四12
		selection->querySubObject("Range")->querySubObject("Font")->setProperty("Name", FontName);//字体(在插入字符前设置字体)

		pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphCenter");//水平居中
		pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("LineSpacingRule", "wdLineSpace1pt5");//1.5行距  
		pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("LineUnitAfter", 0.5);//段后0.5
		pBookmark->querySubObject("Range")->setProperty("Text", sText);//插入字符
		delete pBookmark;
		//selection->querySubObject("Range")->querySubObject("Font")->setProperty("Bold", 1);//加粗
	}
	return true;
}
/***** 插入文本到标签处 【 居中,行距1.5,段后0.5】
******input:(QString)标签名字,(QString)内容,是否居中(0靠左,1居中,2靠右),(QString)字体,(int)字体大小 【默认黑体,字号12】
******output: (bool)
*/
bool WordEngine::WordReplaceText(QString sLabel, QString sText, int iscenter, QString FontName, int size)
{
	if (!m_pWorkDocument) {
		return false;
	}
	//获取文档中名字为sLabel的标签
	QAxObject *pBookmark = m_pWorkDocument->querySubObject("Bookmarks(QString)", sLabel);
	if (pBookmark)
	{

		pBookmark->dynamicCall("Select(void)");

		QAxObject *selection = m_pWord->querySubObject("Selection");//设置字体FontName
		selection->dynamicCall("InsertAfter(QString&)", "\r\n");//不能删除,否则会出错
		selection->querySubObject("Range")->querySubObject("Font")->setProperty("Size", size);//设置字体大小:小四12
		selection->querySubObject("Range")->querySubObject("Font")->setProperty("Name", FontName);//字体(在插入字符前设置字体)

		if (iscenter == 1)
			pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphCenter");//水平居中
		pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("LineSpacingRule", "wdLineSpace1pt5");//1.5行距  
		pBookmark->querySubObject("Range")->querySubObject("ParagraphFormat")->setProperty("LineUnitAfter", 0.5);//段后0.5
		pBookmark->querySubObject("Range")->setProperty("Text", sText);//插入字符
		delete pBookmark;
		//selection->querySubObject("Range")->querySubObject("Font")->setProperty("Bold", 1);//加粗
	}
	return true;
}
/*****删除标签处文本
******input:(QString)标签名
******output:
*/
bool WordEngine::deleteLable(QString sLabel)
{
	if (!m_pWorkDocument) {
		return false;
	}
	//获取文档中名字为sLabel的标签
	QAxObject *pBookmark = m_pWorkDocument->querySubObject("Bookmarks(QString)", sLabel);
	if (pBookmark)
	{
		pBookmark->dynamicCall("Select(void)");
		pBookmark->querySubObject("Range")->deleteLater();
		delete pBookmark;
	}
	return true;
}
/*****标签处添加图片
******input:(QString)标签名字,(QString)图片地址
******output: (bool) 
*/
bool WordEngine::replacePic(QString sLabel, QString sFile)
{
	if (!m_pWorkDocument)
		return false;

	QAxObject *bookmark_pic = m_pWorkDocument->querySubObject("Bookmarks(QString)", sLabel);
	if (bookmark_pic)
	{
		bookmark_pic->dynamicCall("Select(void)");
		QAxObject *range = bookmark_pic->querySubObject("Range");
		QVariant tmp = range->asVariant();
		QList<QVariant> qList;
		qList << QVariant(sFile);
		qList << QVariant(false);
		qList << QVariant(true);
		qList << tmp;
		QAxObject *Inlineshapes = m_pWorkDocument->querySubObject("InlineShapes");
		Inlineshapes->dynamicCall("AddPicture(const QString&,QVariant,QVariant,QVariant)", qList);
		delete Inlineshapes;
	}
	return true;
}
/*****标签处插入表格:不带头
******input:(QString)标签名字,(int)表格行数,(int)列数
******output: (QAxObject)
*/
QAxObject *WordEngine::insertTable(QString sLabel, int row, int column)
{
	QAxObject *bookmark = m_pWorkDocument->querySubObject("Bookmarks(QVariant)", sLabel);
	if (bookmark)
	{
		bookmark->dynamicCall("Select(void)");
		QAxObject *selection = m_pWord->querySubObject("Selection");

		selection->dynamicCall("InsertAfter(QString&)", "\n");
		//selection->dynamicCall("MoveLeft(int)", 1);
		selection->querySubObject("ParagraphFormat")->dynamicCall("Alignment", "wdAlignParagraphCenter");//水平居中
		//selection->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
		//selection->dynamicCall("TypeText(QString&)", "Table Test");//设置标题

		QAxObject *range = selection->querySubObject("Range");
		QAxObject *tables = m_pWorkDocument->querySubObject("Tables");
		QAxObject *table = tables->querySubObject("Add(QVariant,int,int)", range->asVariant(), row, column);

		for (int i = 1; i <= 6; i++)
		{
			QString str = QString("Borders(-%1)").arg(i);
			QAxObject *borders = table->querySubObject(str.toLatin1().constData());
			borders->dynamicCall("SetLineStyle(int)", 1);
		}
		return table;
	}
	return NULL;
}
/*****标签处插入表格:带头
******input:(QString)标签名字,(int)表格行数,(int)列数,(QStringList)表头数据
******output: (QAxObject)
*/
QAxObject *WordEngine::insertTable(QString sLabel, int row, int column, QStringList headList)
{
	QAxObject *bookmark = m_pWorkDocument->querySubObject("Bookmarks(QVariant)", sLabel);
	if (headList.size() != column) {
		return NULL;
	}
	if (bookmark)
	{
		bookmark->dynamicCall("Select(void)");
		QAxObject *selection = m_pWord->querySubObject("Selection");

		selection->dynamicCall("InsertAfter(QString&)", "\r\n");
		//selection->dynamicCall("MoveLeft(int)", 1);
		selection->querySubObject("ParagraphFormat")->dynamicCall("Alignment", "wdAlignParagraphCenter");//水平居中
		//selection->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
		//设置标题
		//selection->dynamicCall("TypeText(QString&)", "Table Test");

		QAxObject *range = selection->querySubObject("Range");
		QAxObject *tables = m_pWorkDocument->querySubObject("Tables");
		QAxObject *table = tables->querySubObject("Add(QVariant,int,int)", range->asVariant(), row, column);
		//表格自动拉伸列 0固定  1根据内容调整  2 根据窗口调整
		table->dynamicCall("AutoFitBehavior(WdAutoFitBehavior)", 2);

		//设置表头
		for (int i = 0; i < headList.size(); i++) {
			table->querySubObject("Cell(int,int)", 1, i + 1)->querySubObject("Range")->dynamicCall("SetText(QString)", headList.at(i));
			//加粗
			table->querySubObject("Cell(int,int)", 1, i + 1)->querySubObject("Range")->dynamicCall("SetBold(int)", true);
		}

		for (int i = 1; i <= 6; i++)
		{
			QString str = QString("Borders(-%1)").arg(i);
			QAxObject *borders = table->querySubObject(str.toLatin1().constData());
			borders->dynamicCall("SetLineStyle(int)", 1);
		}
		return table;
	}
	return NULL;
}
/*****为表格添加行
******input:(QAxObject)表格指针,(int)第几行处添加,(int)共添加几行
******output:
*/
void WordEngine::addTableRow(QAxObject *table, int nRow, int rowCount)
{
	QAxObject *rows = table->querySubObject("Rows");
	int count = rows->dynamicCall("Count").toInt();
	if (0 <= nRow && nRow <= count)
	{
		for (size_t i = 0; i < rowCount; i++)
		{
			QString sPos = QString("Item(%1)").arg(nRow + i);
			QAxObject *row = rows->querySubObject(sPos.toStdString().c_str());
			QVariant param = row->asVariant();
			rows->dynamicCall("Add(Variant)", param);
		}
	}
}
/*****获取表格行数
******input:所选信号
******output: (int)
*/
int WordEngine::currenRow()
{
	QAxObject*selection = m_pWord->querySubObject("Selection");
	int row = selection->dynamicCall("Information(QVariant&)", 10).toInt();
	return row;
}
/*****合并单元格
******input:(int)开始行,(int)开始列,(int)结束行,(int)结束列,(QAxObject)表格指针
******output: (QAxObject)
*/
void WordEngine::MergeCells(int nStartRow, int nStartCol, int nEndRow, int nEndCol, QAxObject *table, int tableIndex)
{
	if (nullptr == table)
	{
		return;
	}
	if (table)
	{
		QAxObject* StartCell = table->querySubObject("Cell(int, int)", nStartRow, nStartCol);
		QAxObject* EndCell = table->querySubObject("Cell(int, int)", nEndRow, nEndCol);
		if (nullptr == StartCell)
		{
			return;
		}
		if (nullptr == EndCell)
		{
			return;
		}
		StartCell->querySubObject("Merge(QAxObject *)", EndCell->asVariant());
	}
}
/*****获取单元格内容 此处对于Excel来说列和行从1开始最少
******input:(int)行,(int)列
******output: (QVariant)
*/
QVariant WordEngine::getCellValue(int row, int column)					
{
	QAxObject* selection = m_pWord->querySubObject("Selection");
	QAxObject* table = selection->querySubObject("Tables(1)");
	if (nullptr != selection && nullptr != table)
		return table->querySubObject("Cell(int, int)", row, column)->querySubObject("Range")->property("Text");
	else
		return QVariant("");
}
/*****获取单元格内容 此处对于Excel来说列和行从1开始最少
******input:(int)行,(int)列,(QAxObject)表格指针
******output: (QVariant)
*/
QVariant WordEngine::getCellValue(int row, int column, QAxObject *table)				
{
	if (nullptr != table)
	{
		QAxObject *cell = table->querySubObject("Cell(int, int)", row, column);
		if (cell)
			return cell->querySubObject("Range")->property("Text");
	}
	return QVariant("");
}
/*****设置表格列宽
******input:(QAxObject)表格指针,(int)列,(int)宽度
******output: 
*/
void WordEngine::setColumnWidth(QAxObject *table, int column, int width)
{
	if (!table) {
		return;
	}
	table->querySubObject("Columns(int)", column)->setProperty("Width", width);
}
/*****设置表格内容
******input:(QAxObject)表格指针,(int)行,(int)列,(int)内容
******output: 
*/
void WordEngine::SetTableCellString(QAxObject *table, int row, int column, QString text,int Alignment)
{
	if (!table)
		return;
	QAxObject *cell = table->querySubObject("Cell(int,int)", row, column);
	if (!cell)
		return;
	cell->dynamicCall("Select(void)");
	if (!cell)
		return;
	cell->querySubObject("Range")->setProperty("Text", text);
	if (row == 1)		//加粗
		cell->querySubObject("Range")->dynamicCall("SetBold(int)", true);
	setAlignment(Alignment);
	cell->querySubObject("Range")->querySubObject("Font")->setProperty("Size", 10);
	cell->querySubObject("Range")->querySubObject("Font")->setProperty("Name", "Times New Roman");
}

void WordEngine::saveLastError(int arg1, QString arg2, QString arg3, QString arg4)
{
	qDebug() << "QAxBase Error:" << QString::number(arg1) << arg2 << arg3 << arg4;
}

void WordEngine::setRowAlignment(QAxObject *table, int row, int flag)
{
	if (nullptr == table)
	{
		return;
	}
	QAxObject* Row = table->querySubObject("Rows(int)", row);
	if (nullptr == Row)
	{
		return;
	}
	QAxObject* range = Row->querySubObject("Range");
	if (nullptr == range)
	{
		return;
	}
	Row->querySubObject("Alignment(int)", flag);
	if (flag == 0)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphCenter");//水平居中
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 1)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphJustify");
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 2)//wdAlignParagraphJustifyMed
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphRight");
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 3)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphLeft");
		range->querySubObject("ParagraphFormat")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
}

void WordEngine::setCellAlignment(QAxObject *table, int row, int col, int flag)
{
	if (nullptr == table)
	{
		return;
	}
	QAxObject *cell = table->querySubObject("Cell(int,int)", row, col);
	if (nullptr == cell)
	{
		return;
	}
	QAxObject* range = cell->querySubObject("Range");
	if (nullptr == range)
	{
		return;
	}
	cell->querySubObject("Alignment(int)", flag);
	if (flag == 0)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphCenter");//水平居中
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 1)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphJustify");
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 2)//wdAlignParagraphJustifyMed
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphRight");
		range->querySubObject("Cells")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
	else if (flag == 3)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment", "wdAlignParagraphLeft");
		range->querySubObject("ParagraphFormat")->setProperty("VerticalAlignment", "wdCellAlignVerticalCenter");//垂直居中
	}
}
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在Qt中编Word表格标题等内容,您需要使用Qt的QAxObject库来操作Microsoft Office Word应用程序。以下是一个示例,演示如何在Word文档中添加表格标题: ```c++ #include <QAxObject> // create Word application object QAxObject* word = new QAxObject("Word.Application"); // set visible property to true word->setProperty("Visible", true); // create new document QAxObject* doc = word->querySubObject("Documents"); doc = doc->querySubObject("Add()"); // add table QAxObject* tables = doc->querySubObject("Tables"); tables->dynamicCall("Add(QVariant,int,int,QVariant)", QVariant(1), QVariant(3), QVariant(3), QVariant(1)); // add content to table cells QAxObject* table = tables->querySubObject("Item(int)", 1); QAxObject* cell1 = table->querySubObject("Cell(int,int)", 1, 1); cell1->dynamicCall("Range.Text", "Header 1"); QAxObject* cell2 = table->querySubObject("Cell(int,int)", 1, 2); cell2->dynamicCall("Range.Text", "Header 2"); QAxObject* cell3 = table->querySubObject("Cell(int,int)", 1, 3); cell3->dynamicCall("Range.Text", "Header 3"); QAxObject* cell4 = table->querySubObject("Cell(int,int)", 2, 1); cell4->dynamicCall("Range.Text", "1"); QAxObject* cell5 = table->querySubObject("Cell(int,int)", 2, 2); cell5->dynamicCall("Range.Text", "2"); QAxObject* cell6 = table->querySubObject("Cell(int,int)", 2, 3); cell6->dynamicCall("Range.Text", "3"); QAxObject* cell7 = table->querySubObject("Cell(int,int)", 3, 1); cell7->dynamicCall("Range.Text", "4"); QAxObject* cell8 = table->querySubObject("Cell(int,int)", 3, 2); cell8->dynamicCall("Range.Text", "5"); QAxObject* cell9 = table->querySubObject("Cell(int,int)", 3, 3); cell9->dynamicCall("Range.Text", "6"); // add title QAxObject* selection = word->querySubObject("Selection"); selection->dynamicCall("TypeText(QString)", "My Title"); // save and close document doc->dynamicCall("Close()", false); word->dynamicCall("Quit()"); ``` 在此示例中,我们首先创建一个Word应用程序对象,然后创建一个新的文档。我们使用`dynamicCall()`方法调用Word COM对象的方法来添加表格标题,然后使用`Close()`方法关闭文档并退出Word应用程序。 请注意,要使用QAxObject库,您需要在Qt项目文件中添加以下行: ```c++ QT += axcontainer ``` 这将使Qt包含ActiveX控件支持库。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值