VC编程操作word2010生成表格

作者:朱金灿

来源:http://blog.csdn.net/clever101

   

一.   右键单击工程节点,然后选择添加类,如下图:
VC编程操作word2010生成表格_第1张图片


二.   添加TypeLib中的MFC类,如下图:

VC编程操作word2010生成表格_第2张图片

三.   选择文件,打开MSWORD.OLB, word2010的在Office14的文件夹下,如下图:


VC编程操作word2010生成表格_第3张图片

四.   生成所有的接口类代码,如下图:

VC编程操作word2010生成表格_第4张图片

五.   生成表格的代码如下:

void CMFCDlgDlg::OnBnClickedButton1()
{
	CApplication     oWordApp; 
	CDocuments        oDocs;

	CDocument0       oDoc;

	CRange            range;

	CParagraph        paragraph;

	CParagraphs       paragraphs;

	CCell             cell;

	CCells            cells;

	CTable0            table;

	CTables0           tables;

	CBorder           border;

	CBorders          borders;

	CFont0           font;

	CPageSetup        pagesetup;

	//2.创建和连接word对象,初始化连接,判断当前系统是否有word进程,然后然后创建或连接对象

	LPDISPATCH   pDisp; 

	LPUNKNOWN    pUnk; 

	CLSID        clsid; 

	CLSIDFromProgID(L"Word.Application",&clsid); 

	if(GetActiveObject(clsid,NULL,&pUnk)==S_OK) 
	{ 
		pUnk->QueryInterface(IID_IDispatch,(void **)&pDisp);
		oWordApp.AttachDispatch(pDisp);
	}  
	else 
	{ 
		if(!oWordApp.CreateDispatch("Word.Application"))
		{
			AfxMessageBox("创建Word服务失败!"); 
		}
	}

	//初始化文档,生成WORD表格
	oWordApp.m_bAutoRelease=true;
	BeginWaitCursor();

	oDocs=oWordApp.get_Documents();

	COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
	oDoc=oDocs.Add(vOpt,vOpt,vOpt,vOpt);//加新文档

	pagesetup=oDoc.get_PageSetup();

	pagesetup.put_Orientation(1);  //横向

	paragraphs=oDoc.get_Paragraphs(); 

	paragraph=paragraphs.get_Last();//以当前段落最后一行为表起始位置

	range=paragraph.get_Range();
	//添加制作新表格

	tables=oDoc.get_Tables();

	int nBhCount=3;
	table=tables.Add(range,5+nBhCount,6,vOpt,vOpt);
	borders=table.get_Borders();
	borders.put_Enable(1); //显示表框

	range=table.get_Range();

	cells=range.get_Cells();

	cells.put_VerticalAlignment(1);//文字居中

#define DOC_TABLE1_WIDTH 60


	cells.SetWidth(DOC_TABLE1_WIDTH,1); 

	cell=table.Cell(1,1);//合并第一行的三列

	cell.Merge(table.Cell(1,6));
	range=cell.get_Range();

	range.put_Bold(1);
	range.put_Text("                                         病害统计信息"); //居中

	cell=table.Cell(2,1);

	cell.Merge(table.Cell(2,2));
	range=cell.get_Range();

	range.put_Bold(1);
	range.put_Text("组成材料");

	cell=table.Cell(2,2);

	cell.Merge(table.Cell(2,4));
	range=cell.get_Range();
	range.put_Bold(1);

	range.put_Text("病害种类");

	cell=table.Cell(2,3);
	range=cell.get_Range();
	range.put_Bold(1);
	range.put_Text("病害总数");

	for(int iBh=0;iBh

效果图如下:

VC编程操作word2010生成表格_第5张图片


参考文献:

1. VC 6.0动态生成Word表格实例

你可能感兴趣的:(Office,Dev)