MFC/VC++调用word进行报表制作
使用word进行数据报告的制作可谓非常方便,word具有非常强大的编辑、排版功能。使用word能够制作出内容丰富、样式精美的报告。我们在工作中当然会有报表报告的需求,如果能够在MFC/VC++里面能够调用word进行word格式报告的自动生成,岂不是一件非常惬意的事情。
我在工作当中需要对大量的数据或者各种测试数据进行统计分析,最终的统计分析结果总归要汇总为一份报告,不管是内部使用也好还是外部提供给客户也好,一份内容翔实、格式精美的报告自然必不可少。我对MFC/VC++也不是高手,只是业余爱好自己动动手做些东西。自然,低于VC操作word可谓完全没有经验,在网络上面也查找了很多资料,都是些只言片语,不能真正的领略通过VC使用word的方法。于是自己摸索了几个礼拜,可谓耗时甚长,劳心劳力啊。MS的东西,封装的也太严实了,对于函数部分只有些许的简单介绍,往往看的云里雾里。没有实践还是不行啊!体会自己的经历,虽然辛苦但也有收获。不想其他朋友再继续走我走过的路,浪费时间、精力,故成文以共享。
废话少说,进入正题吧。
第一步,当然我们需要首先导入word需要的库。通过ClassWizard->Add Class选择From a Type Library…定位需要的库文件导入。本例应该使用C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB,在这里尽可选择所有的类导入,反正用的时候都有了,呵呵。完成这一步,我们得到两个文件msword.h和msword.cpp,那就加入你的工程吧。
说明:如果需要在VC++/MFC开发程序操作word/excel等office元素,那么需要对必要的类型库进行导入.下面是office系列的类型库参考,导入类型库时候请选择正确的类型库进行导入.
|
应用程序
|
类型库
|
|
Microsoft Access 97
|
Msacc8.olb
|
|
Microsoft Jet Database 3.5
|
DAO350.dll
|
|
Microsoft Binder 97
|
Msbdr8.olb
|
|
Microsoft Excel 97
|
Excel8.olb
|
|
Microsoft Graph 97
|
Graph8.olb
|
|
Microsoft Office 97
|
Mso97.dll
|
|
Microsoft Outlook 97
|
Msoutl97.olb
|
|
Microsoft PowerPoint 97
|
Msppt8.olb
|
|
Microsoft Word 97
|
Msword8.olb
|
|
|
|
|
Microsoft Access 2000
|
Msacc9.olb
|
|
Microsoft Jet Database 3.51
|
DAO360.dll
|
|
Microsoft Binder 2000
|
Msbdr9.olb
|
|
Microsoft Excel 2000
|
Excel9.olb
|
|
Microsoft Graph 2000
|
Graph9.olb
|
|
Microsoft Office 2000
|
Mso9.dll
|
|
Microsoft Outlook 2000
|
Msoutl9.olb
|
|
Microsoft PowerPoint 2000
|
Msppt9.olb
|
|
Microsoft Word 2000
|
Msword9.olb
|
|
|
|
|
Microsoft Access 2002
|
Msacc.olb
|
|
Microsoft Excel 2002
|
Excel.exe
|
|
Microsoft Graph 2002
|
Graph.exe
|
|
Microsoft Office 2002
|
MSO.dll
|
|
Microsoft Outlook 2002
|
MSOutl.olb
|
|
Microsoft PowerPoint 2002
|
MSPpt.olb
|
|
Microsoft Word 2002
|
MSWord.olb
|
|
|
|
|
Microsoft Office Access 2003
|
Msacc.olb
|
|
Microsoft Office Excel 2003
|
Excel.exe
|
|
Microsoft Office Graph 2003
|
Graph.exe
|
|
Microsoft Office 2003
|
MSO.dll
|
|
Microsoft Office Outlook 2003
|
MSOutl.olb
|
|
Microsoft Office PowerPoint 2003
|
MSPpt.olb
|
|
Microsoft Office Word 2003
|
MSWord.olb
|
注意:这些类型库的默认位置是:
|
Office 版本
|
路径
|
|
Office 97
|
C:\Program Files\Microsoft Office\Office
|
|
Office 2000
|
C:\Program Files\Microsoft Office\Office
|
|
Office XP
|
C:\Program Files\Microsoft Office\Office10
|
|
Office 2003
|
C:\Program Files\Microsoft Office\Office11
|
Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao。
第二步,进入具体使用实践阶段。激动人心的时刻到来了,呵呵。不过别忘记把你的H文件#Include进来。下面是我的一个例子,从我具体的工程当中抽取出来供各位参考。有些地方我会简要解释。还等什么,赶紧试验一下代码吧。修改一下就是你的报告了,开心吧。
BOOL CMDIDemoApp::OnMakeReport()
{
_Application wordApp;
Documents wordDocs;
_Document wordDoc;
Selection wordSelection;
Range wordRange;
Tables wordTables;
Table wordTable;
Cell wordCell;
Cells wordCells;
//Paragraphs wordParagraphs;
//Paragraph wordParagraph;
_Font wordFont;
Shading wordShading;
//
int nRow=0;
//
COleVariant vTrue((short)TRUE),
vFalse((short)FALSE),
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CComVariant defaultBehavior(1),AutoFitBehavior(0);
//创建word application实例
if (!wordApp.CreateDispatch(_T("Word.Application")))
{
AfxMessageBox("Word CreateDispatch Failed!");
return FALSE;
}
wordApp.SetVisible(TRUE);//make visible
wordApp.Activate();//激活
wordDocs=wordApp.GetDocuments();//get documents object
//