VC编程操作word2010生成表格

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

作者:朱金灿

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

   

一.   右键单击工程节点,然后选择添加类,如下图:


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

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


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


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

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;iBh2+iBh+1,1);  cell.Merge(table.Cell(2+iBh+1,2));  range=cell.get_Range();  range.put_Bold(0);  range.put_Text("hello1");  cell=table.Cell(2+iBh+1,2);  cell.Merge(table.Cell(2+iBh+1,4));  range=cell.get_Range();  range.put_Bold(0);  range.put_Text("hello2");  cell=table.Cell(2+iBh+1,3);  range=cell.get_Range();  range.put_Bold(0);  range.put_Text("hello3");     } cell=table.Cell(3+nBhCount,1);//合并列 cell.Merge(table.Cell(3+nBhCount,6)); range=cell.get_Range(); range.put_Bold(1); range.put_Text("                                       等级统计信息"); for(int iCol=1;iCol<=6;iCol++) {  cell=table.Cell(3+nBhCount+1,iCol);  range=cell.get_Range();  range.put_Bold(1);  range.put_Text("hello4");  cell=table.Cell(3+nBhCount+2,iCol);  range=cell.get_Range();  range.put_Bold(0);  range.put_Text("hello5");  } //保存,清理 CString  strSave= "E:\\doc\\test.doc"COleVariant vTrue((short)TRUE), vFalse((short)FALSE); CDocument0 oActiveDoc;  oActiveDoc = oWordApp.get_ActiveDocument();  oActiveDoc.SaveAs(COleVariant(strSave),COleVariant((short)0), vFalse,  COleVariant(""), vTrue,COleVariant(""),vFalse,   vFalse, vFalse, vFalse, vFalse,  vOpt,vOpt,vOpt,vOpt,vOpt);  oWordApp.put_Visible(true); oWordApp.ReleaseDispatch(); //退出WORD  EndWaitCursor();}

效果图如下:



参考文献:

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

           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

你可能感兴趣的:(VC编程操作word2010生成表格)