作者:朱金灿

来源: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表格实例

VC编程操作word2010生成表格的更多相关文章

  1. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  2. 积累的VC编程小技巧之按钮

    1.资源种创建的控件,对其属性的动态控制: 在对话框类的头文件里创建所要改变属性的控件的对象,如要改变一个Button(其ID为IDC_MyButton)的属性,则需创建Cbutton的对象m_but ...

  3. SpringBoot使用WebFlux响应式编程操作数据库

    这一篇文章介绍SpringBoot使用WebFlux响应式编程操作MongoDb数据库. 前言 在之前一篇简单介绍了WebFlux响应式编程的操作,我们在来看一下下图,可以看到,在目前的Spring ...

  4. VBA操作word生成sql语句

    项目开始一般都是用word保存下数据库的文档 但是从表单一个一个的建表实在是很困难乏味,查查资料 1.可以生成一个html或者xml,检索结构生成sql.但是这个方式也蛮麻烦 2.查到vba可以操作w ...

  5. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  6. VC++文件操作之最全篇

    一.剖析VC中的文件操作 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分 ...

  7. vue+element创建动态的form表单.以及动态生成表格的行和列

    动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...

  8. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

  9. VC++ 字符串操作学习总结

    vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间 ...

随机推荐

  1. TX 下常用的查询指令

    查看Jetson TX2 L4T版本 head -n 1 /etc/nv_tegra_release 查看系统版本 cat /etc/lsb-release 查看系统l内核 uname -a 查看内存 ...

  2. Mockplus原型设计工具介绍

    一.原型设计工具简介 Mockplus (摹客)  一种快速原型设计工具 官网提供四个平台的下载,通用性很广. 二.原型设计的模板 Mockplus可以为设计者提供以下几种模板 其中在“手机”模板里, ...

  3. ORM查询练习

    ORM查询练习 Django ORM  ORM查询的练习题 ORM代码 from django.db import models # Create your models here. class Pu ...

  4. 高阶篇:4.2)DFMEA设计失效模式和失效后果分析-总章

    本章目的:了解FMEA和DFMEA的概念. 1.什么是FMEA(what) 潜在的失效模式及后果分析(Potential Failure Mode and Effects Analysis,简称FME ...

  5. L1-2 倒数第N个字符串 (15 分)真坑

    给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时,序列为 { aaa, aab, aac, . ...

  6. wx.config失败

    wx.config({ debug: false, appId: _appId, timestamp: _timestamp, nonceStr: _nonceStr, signature: _sig ...

  7. native excel 文件已经打开的判断

    book := TXLSWorkbook.Create; try then begin raise Exception.Create('请检查导入的文件是否存在或Excel已经处于打开状态(如果已经打 ...

  8. jenkins+Publish Over SSH 提示:Transferred 0 file(s)

    之前公司用jekins来进行自动化发布,现在公司因没有运维,所以自己学习.并搭建了一个jenkins的环境来进行项目自动化部署. 不料在最后连接ssh后部署时,一直提示Transferred 0 fi ...

  9. 引入background和background-size不显示图片

    .bgLeft { position: absolute; left: -95px; background: url("../images/logo_1.png") left to ...

  10. (转)CentOS分区操作详解

    CentOS分区操作详解 原文:http://blog.csdn.net/yonggeit/article/details/77924393 磁盘分区 分区格式的两种选择:MBR和GPT 分区命令: ...