作者:朱金灿

来源: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;iBh<nBhCount;iBh++)
{
cell=table.Cell(2+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表格实例

最新文章

  1. IOS开发之多线程 -- GCD的方方面面
  2. stl学习(二)集合 set 的使用
  3. Why does this json4s code work in the scala repl but fail to compile?
  4. iOS: imageIO完成渐进加载图片
  5. node.js 学习书籍推荐
  6. Storm集群的搭建
  7. apache开源项目--Syncope
  8. Javascript 对输入框中的内容进行 “全选/反选”
  9. gcc 生成动态库时-fpic选项是什么意思。
  10. 【Objective-C基础教程-读书笔记】第1章 启程
  11. js 验证表单 js提交验证类
  12. LeetCode 6. ZigZag Conversion Question
  13. BZOJ 3572 世界树(虚树)
  14. Dynamic 中修改实体中主字段的长度
  15. Angular Taskmgr 登录
  16. 妙用valueForKeyPath
  17. samba企业级实战应用详解-技术流ken
  18. linux下的crontab安装及简单使用
  19. centos6.5环境下svn服务器和客户端配置实用详解
  20. 6 CLR实例构造器

热门文章

  1. Go语言特殊函数介绍
  2. android面试注意点
  3. window.onresize事件在vue项目中的应用
  4. C语言实现全排列和回溯法总结
  5. 文件IO(存取.txt文件)
  6. 解决Eclipse中Android SDK Manager图标不见了的问题
  7. 多线程FTP下载日志脚本
  8. 原创经验:微信小程序开发总结
  9. ajax返回整个页面
  10. [android] 切换界面的通用处理