VC 表格的生成

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


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

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


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


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

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. void CMFCDlgDlg::OnBnClickedButton1()  
  2. {  
  3.     CApplication     oWordApp;   
  4.     CDocuments        oDocs;  
  5.   
  6.     CDocument0       oDoc;  
  7.   
  8.     CRange            range;  
  9.   
  10.     CParagraph        paragraph;  
  11.   
  12.     CParagraphs       paragraphs;  
  13.   
  14.     CCell             cell;  
  15.   
  16.     CCells            cells;  
  17.   
  18.     CTable0            table;  
  19.   
  20.     CTables0           tables;  
  21.   
  22.     CBorder           border;  
  23.   
  24.     CBorders          borders;  
  25.   
  26.     CFont0           font;  
  27.   
  28.     CPageSetup        pagesetup;  
  29.   
  30.     //2.创建和连接word对象,初始化连接,判断当前系统是否有word进程,然后然后创建或连接对象  
  31.   
  32.     LPDISPATCH   pDisp;   
  33.   
  34.     LPUNKNOWN    pUnk;   
  35.   
  36.     CLSID        clsid;   
  37.   
  38.     CLSIDFromProgID(L"Word.Application",&clsid);   
  39.   
  40.     if(GetActiveObject(clsid,NULL,&pUnk)==S_OK)   
  41.     {   
  42.         pUnk->QueryInterface(IID_IDispatch,(void **)&pDisp);  
  43.         oWordApp.AttachDispatch(pDisp);  
  44.     }    
  45.     else   
  46.     {   
  47.         if(!oWordApp.CreateDispatch("Word.Application"))  
  48.         {  
  49.             AfxMessageBox("创建Word服务失败!");   
  50.         }  
  51.     }  
  52.   
  53.     //初始化文档,生成WORD表格  
  54.     oWordApp.m_bAutoRelease=true;  
  55.     BeginWaitCursor();  
  56.   
  57.     oDocs=oWordApp.get_Documents();  
  58.   
  59.     COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);  
  60.     oDoc=oDocs.Add(vOpt,vOpt,vOpt,vOpt);//加新文档  
  61.   
  62.     pagesetup=oDoc.get_PageSetup();  
  63.   
  64.     pagesetup.put_Orientation(1);  //横向  
  65.   
  66.     paragraphs=oDoc.get_Paragraphs();   
  67.   
  68.     paragraph=paragraphs.get_Last();//以当前段落最后一行为表起始位置  
  69.   
  70.     range=paragraph.get_Range();  
  71.     //添加制作新表格  
  72.   
  73.     tables=oDoc.get_Tables();  
  74.   
  75.     int nBhCount=3;  
  76.     table=tables.Add(range,5+nBhCount,6,vOpt,vOpt);  
  77.     borders=table.get_Borders();  
  78.     borders.put_Enable(1); //显示表框  
  79.   
  80.     range=table.get_Range();  
  81.   
  82.     cells=range.get_Cells();  
  83.   
  84.     cells.put_VerticalAlignment(1);//文字居中  
  85.   
  86. #define DOC_TABLE1_WIDTH 60  
  87.   
  88.   
  89.     cells.SetWidth(DOC_TABLE1_WIDTH,1);   
  90.   
  91.     cell=table.Cell(1,1);//合并第一行的三列  
  92.   
  93.     cell.Merge(table.Cell(1,6));  
  94.     range=cell.get_Range();  
  95.   
  96.     range.put_Bold(1);  
  97.     range.put_Text("                                         病害统计信息"); //居中  
  98.   
  99.     cell=table.Cell(2,1);  
  100.   
  101.     cell.Merge(table.Cell(2,2));  
  102.     range=cell.get_Range();  
  103.   
  104.     range.put_Bold(1);  
  105.     range.put_Text("组成材料");  
  106.   
  107.     cell=table.Cell(2,2);  
  108.   
  109.     cell.Merge(table.Cell(2,4));  
  110.     range=cell.get_Range();  
  111.     range.put_Bold(1);  
  112.   
  113.     range.put_Text("病害种类");  
  114.   
  115.     cell=table.Cell(2,3);  
  116.     range=cell.get_Range();  
  117.     range.put_Bold(1);  
  118.     range.put_Text("病害总数");  
  119.   
  120.     for(int iBh=0;iBh<nBhCount;iBh++)  
  121.     {  
  122.         cell=table.Cell(2+iBh+1,1);  
  123.         cell.Merge(table.Cell(2+iBh+1,2));  
  124.         range=cell.get_Range();  
  125.         range.put_Bold(0);  
  126.         range.put_Text("hello1");  
  127.         cell=table.Cell(2+iBh+1,2);  
  128.         cell.Merge(table.Cell(2+iBh+1,4));  
  129.         range=cell.get_Range();  
  130.         range.put_Bold(0);  
  131.         range.put_Text("hello2");  
  132.         cell=table.Cell(2+iBh+1,3);  
  133.         range=cell.get_Range();  
  134.         range.put_Bold(0);  
  135.         range.put_Text("hello3");      
  136.     }  
  137.   
  138.     cell=table.Cell(3+nBhCount,1);//合并列  
  139.     cell.Merge(table.Cell(3+nBhCount,6));  
  140.     range=cell.get_Range();  
  141.     range.put_Bold(1);  
  142.     range.put_Text("                                       等级统计信息");  
  143.     for(int iCol=1;iCol<=6;iCol++)  
  144.     {  
  145.         cell=table.Cell(3+nBhCount+1,iCol);  
  146.         range=cell.get_Range();  
  147.         range.put_Bold(1);  
  148.         range.put_Text("hello4");  
  149.         cell=table.Cell(3+nBhCount+2,iCol);  
  150.         range=cell.get_Range();  
  151.         range.put_Bold(0);  
  152.         range.put_Text("hello5");   
  153.     }  
  154.   
  155.     //保存,清理  
  156.     CString  strSave= "E:\\doc\\test.doc";  
  157.     COleVariant vTrue((short)TRUE), vFalse((short)FALSE);  
  158.     CDocument0 oActiveDoc;   
  159.     oActiveDoc = oWordApp.get_ActiveDocument();   
  160.   
  161.     oActiveDoc.SaveAs(COleVariant(strSave),COleVariant((short)0), vFalse,  
  162.   
  163.         COleVariant(""), vTrue,COleVariant(""),vFalse,   
  164.   
  165.         vFalse, vFalse, vFalse, vFalse,  
  166.   
  167.         vOpt,vOpt,vOpt,vOpt,vOpt);   
  168.   
  169.     oWordApp.put_Visible(true);  
  170.   
  171.     oWordApp.ReleaseDispatch(); //退出WORD   
  172.   
  173.     EndWaitCursor();  
  174. }  

效果图如下: 


来自:http://blog.csdn.net/clever101/article/details/52185032




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值