今天做了一个输出报表的模块,要用程序输出到WORD中,在网上找了半天,大多是VB代码,杂而且乱,尤其是合并单元格,几乎找不到有用的信息。所幸最终还是写了出来,拿来和大家分享一下,也可以少走些弯路。
一。 打开类向导->ClassInfo->Add class->From a type library
在WORD的安装目录下,找到msword.olb 加入以下类
_Application (word 实例)
Documents
_Document
Range
Tables
Table
Cells
Cell
Columns
Column
Selection
InlineShapes (用于插入图片)
二,代码实现。
#define ERROR_CREATEFAIL1
#define ERROR_WRITEFAIL2
#ifndef ERROR_SUCESS
#define ERROR_SUCESS0
#endif
int MakeReport( LPCTSTR strFileName, LPCTSTR strImageName)
{
COleVariant vTrue((short)TRUE), vFalse((short)false), vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application oWordApp;
if(!oWordApp.CreateDispatch("Word.Application", NULL))
{
return ERROR_CREATEFAIL;
}
DocumentsoDocs;
_DocumentoDoc;
RangewordRange;
Tablestables;
Tabletable;
CellswordCells;
CellwordCell;
ColumnswordColumns;
ColumnwordColumn;
try{
oDocs = oWordApp.GetDocuments();
oDoc = oDocs.Add(vOpt, vOpt, vOpt, vOpt);
Selection oSel;
oSel = oWordApp.GetSelection();
tables = oDoc.GetTables();
wordRange = oSel.GetRange();
// 创建表格
table = tables.Add(wordRange, 3, 10, vOpt, vOpt);
table.SetAllowAutoFit(false);
wordColumns = table.GetColumns();
// 合并第一列
wordColumn = wordColumns.Item(1);
wordColumn.SetWidth(100);
wordCells = wordColumn.GetCells();
wordCells.Merge();
wordRange.SetOrientation(1);
wordCells.SetVerticalAlignment(1);
wordRange.SetText("第一列");
// 合并三组标题
/* ------------------------------- */
wordCell = table.Cell(1, 2);
wordRange = wordCell.GetRange();
wordRange.SetText("A");
int iStart = wordRange.GetStart();
wordCell = table.Cell(1, 4);
wordRange = wordCell.GetRange();
int iEnd = wordRange.GetEnd();
wordRange.SetStart(iStart);
wordRange.SetEnd(iEnd);
wordCells = wordRange.GetCells();
wordCells.Merge();
wordCell = table.Cell(1, 3); //第二次合并时,前边已经只有两列了,所以从第三列开始
wordRange = wordCell.GetRange();
wordRange.SetText("B");
iStart = wordRange.GetStart();
wordCell = table.Cell(1, 5);
wordRange = wordCell.GetRange();
iEnd = wordRange.GetEnd();
wordRange.SetStart(iStart);
wordRange.SetEnd(iEnd);
wordCells = wordRange.GetCells();
wordCells.Merge();
wordCell = table.Cell(1, 4);
wordRange = wordCell.GetRange();
wordRange.SetText("C");
iStart = wordRange.GetStart();
wordCell = table.Cell(1, 6);
wordRange = wordCell.GetRange();
iEnd = wordRange.GetEnd();
wordRange.SetStart(iStart);
wordRange.SetEnd(iEnd);
wordCells = wordRange.GetCells();
wordCells.Merge();
/* ------------------------------- */
// 写入数据
...
///
// 插入图片
Selection sel = oWordApp.GetSelection();
sel.EndKey(COleVariant((short)6), COleVariant((short)0));
sel.TypeParagraph();
wordRange = sel.GetRange();
InlineShapes iss = wordRange.GetInlineShapes();
iss.AddPicture(strImageName, vFalse, vTrue, vOpt);
_Document oActiveDoc;
oActiveDoc = oWordApp.GetActiveDocument();
oActiveDoc.SaveAs(COleVariant(strFileName), COleVariant((short)0),
vFalse, COleVariant(""), vTrue, COleVariant(""),
vFalse, vFalse, vFalse, vFalse, vFalse,vFalse,vFalse,vFalse,vFalse,vFalse);
}
catch(CException *e)
{
e->ReportError();
oWordApp.Quit(vFalse, vFalse, vFalse);
return ERROR_WRITEFAIL;
}
oWordApp.Quit(vOpt, vOpt, vOpt);
return ERROR_SUCESS;
}
分享到:
相关推荐
利用vc创建excel表格,字体、背景、边框、合并单元格(源程序)
vc 操作word,包括新建文档,保存文档,写入文字,新建表格,更改表格格式,合并单元格,填写页眉页脚等等。
在用VC控制EXCEL中单元格合并的小程序!!!
vc往access数据库表中插入图片.zip
visual c++操作word文件 新建 保存 新建表格 更改表格 格式合并单元格 填写页眉页脚.zip
在指定的位置插入图片,,vc word 指定位置插入图片
很不错的vc对word操作代码,可以自动生成word表格,并导入数据、合并单元格、编辑眉页等。
CGridCtrl 工程,可以修改表格颜色,合并单元格,设置表格为日期,下拉框选择框等
用vc实现串口通信的完整代码.rar用vc实现串口通信的完整代码.rar用vc实现串口通信的完整代码.rar用vc实现串口通信的完整代码.rar用vc实现串口通信的完整代码.rar用vc实现串口通信的完整代码.rar用vc实现串口通信的...
VC 6.0 利用Word文档实现打印功能,本示例是将需要打印的内容导入到Word文档中,然后直接打开Word文档,用户通过Word选择打印功能,打印出内容,其核心的打印是由word完成的,因此你的电脑上需要安装有Word,并且与...
简单的例子,可以在VC中向WORD插入图片。
VC 获取WORD文档相关属性信息,将查看Word文档的标题、主题、作者、模板、备注等信息,或许可为开发其它程序的VC 编程者提供帮助。
作者项目开发的程序中要实现将程序中数据,包含图片要导出到...主要介绍了QT程序中导出图片到EXCEL指定单元格的实现过程及源码, VC或其他编程语言同样可参考方法说明通过 Excel.Application导出图片到指定单元格。
VC中MicrosoftFlexGrid控件的使用及合并单元格、可编辑操作.pdf
利用vc创建excel2003表格,字体、背景、边框、合并单元格
VC++设置Excel的单元格字体、颜色、边框,合并单元格等(可执行源程序) 可以实现单元格样式设定
压缩文件包括msword.h,msword.cpp。用于VC控制WORD 的必备文件,适用于WORD2003.
vc 创建word文档 类封装 封装文件 CreateWord.h CreateWord.cpp
visual c++ 程序,该程序能够控制office word生成完整报告文档(包括各种表格,页眉页脚,居中,目录,多级列表,多级标题,插入图片等多种功能),非常实用,代码简单易懂,欢迎下载
void CBbView::OnPicture() { CString filename; CString defaultfilename=""; CString filepath; CString fileextention;//文件扩展名 CString filter;... filter="位图文件(*.bmp)|*.bmp|JPG文件(*.jpg)|...