作者:朱金灿

来源: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. java-web 登陆功能

    目录结构 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  2. cmake 简学

    https://www.cnblogs.com/cv-pr/p/6206921.html

  3. JS之作用域与闭包

    JS之作用域与闭包   作用域在JS中同样也是一个重要的概念.它不复杂,因为ES5中只有全局作用域和函数作用域,我们都知道他没有块级作用域.但在ES6中多了一个let,他可以保证外层块不受内层块的影响 ...

  4. docker安装mongo初体验

    1.docker安装在此不做介绍,请自行百度:个人环境是在windows下运行cmd执行docker命令2.打算在docker下安装使用mongo,顺带熟悉docker,拉开篇章3.docker下安装 ...

  5. Request.QueryString 的用法

    比如常见的URL网页地址都有 xxx.asp?type=reLogin   ?号后面的就是querystring querystring是asp中获取数据的一个方法. 那么就可以用request.qu ...

  6. 远控项目(Windows Socket)

    实现内容(屏幕,鼠标,键盘实时控制) 控制端: #pragma once #ifndef keybd_H #define keybd_H #include <stdio.h> #inclu ...

  7. Respone笔记

    1 设置定时刷新的头 //设置定时刷新的头 response.setHeader("refresh", "5;url=http://www.baidu.com" ...

  8. 【随笔】MIME类型

    在openResty作为Web服务器的情况下访问根目录的首页时,出现了这样一个问题: nginx端的配置: worker_processes 2; error_log logs/error.log; ...

  9. 安装并开启ssh服务

    sudo yum install openssh*    安装 2. 设置 sudo vi /etc/ssh/sshd_config 首先先把port改掉port 52222 限制用户AllowUse ...

  10. 【JSON.parse()和JSON.stringify()】

    var str = '{"name":"huangxiaojian","age":"23"}' 结果: JSON.par ...