VC编程操作word2010生成表格
来源:互联网 发布:servlet获取表单数据id 编辑:程序博客网 时间:2024/04/28 11:36
作者:朱金灿
来源: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 60cells.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表格实例
0 0
- VC编程操作word2010生成表格
- VC 表格的生成
- VC操作excel表格
- VC操作excel表格
- VC操作EXCEL表格
- Word2010 自动生成目录
- Word2010 自动生成目录
- word2010如何生成目录
- word2010自动生成目录
- word2010自动生成目录
- VC中操作excel表格
- VC操作excel表格(一)
- VC操作excel表格(一)
- VC中操作excel表格
- VC中操作excel表格
- VC中操作excel表格
- VC中操作excel表格
- VC中操作excel表格
- VS上写helloworld
- Rails Asset Organization
- light oj 1213 - Fantasy of a Summation (数学计数)
- Tyvj 1008 传球游戏
- 排序算法(二):选择排序法
- VC编程操作word2010生成表格
- zynq-7000学习笔记(二)——编译uboot
- 大数据_Kafka_Kafka入门教程
- 关于VR边纹理材质的渲染
- elasticsearch spring 整合
- jquery 对身份证号码验证以及AngularJS表单验证
- error:mysql删除报错Cannot delete or update a parent row (201
- javascript 从定义到执行,你不知道的那些事
- 不定宽高情况下的居中方法