概述
(1)生成Dialog时,要选择ActiveX;
(2)在initdialog中初始化OLE环境
BOOL CDialogTestDlg::OnInitDialog() 中添加
if(!AfxOleInit())
{
AfxMessageBox("OLE Initialization Failed");
return FALSE;
}
(3)View->ClassWizard->Automation->Add Class From Library:定位到你安装Office的目录找到MSWord.Olb(我的word版本是word2007)
添加_Application、Documents、Document、Window、View、Range、Bookmarks、
Bookmark、Fields、Field类即可,注意,不能像有些文章中说的把所有类都添加,否则会编译不通过。
在用到的.CPP文件中添加头文件,比如我的button消息响应函数在xxxDlg.cpp中,就在文件中添加:
#include "msword.h"
#include <atlbase.h>//为使用CcomVariant类型的头文件
#include <comdef.h>
(4)添加代码
//--------声明
_Application WordApp; //Word应用程序对象
Documents WordDocs; //文档对象
_Document WordDoc;
Window window;
View view;
Range range;
Bookmarks bookmarks; //书签对象
Bookmark bookmark;
Fields fields; //域对象
Field field;
//找到word标签,并将数据写到标签对应之处
if(WordApp.m_lpDispatch==NULL)
{
if( WordApp.CreateDispatch("Word.Application") )
{
if(WordDoc.m_lpDispatch==NULL)
{
WordApp.SetVisible(true);//true可见,false不可见
WordApp.SetWindowState(1);//0正常 1最大化 2最小化
WordDocs=WordApp.GetDocuments();
//模板文件路径
variant_t WordTemplate="d:\xxx.dot";//\为转义字符
WordDoc=WordDocs.Add(&WordTemplate,&vtMissing,&vtMissing,&vtMissing);
window=WordApp.GetActiveWindow();
view=window.GetView();
view.SetShowPicturePlaceHolders(false);//不显示图片框
view.SetShowBookmarks(false);//不显示书签
view.SetShowFieldCodes(false);//不显示域代码
bookmarks=WordDoc.GetBookmarks();
//Office模板中对应书签名
bookmark=bookmarks.Item(&_variant_t("ch11"));//找到模板中的标签"ch11"
range=bookmark.GetRange();
range.SetText(m_r1);//在模板标签"ch11"处添加字符串m_r1的内容
bookmark=bookmarks.Item(&_variant_t("ch12"));
range=bookmark.GetRange();
range.SetText(m_r2);
bookmark=bookmarks.Item(&_variant_t("ch13"));
range=bookmark.GetRange();
range.SetText(m_r3);
bookmark=bookmarks.Item(&_variant_t("ch21"));
range=bookmark.GetRange();
range.SetText(m_r4);
bookmark=bookmarks.Item(&_variant_t("ch22"));
range=bookmark.GetRange();
range.SetText(m_r5);
bookmark=bookmarks.Item(&_variant_t("ch23"));
range=bookmark.GetRange();
range.SetText(m_r6);
_variant_t Report="d:\xxx.Doc";//报告存放路径
_variant_t ReportPassWord="";//为报告加密,可在此输入密码
WordDoc.SaveAs(&Report,&vtMissing,&vtMissing,&ReportPassWord,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing,&vtMissing);
//释放所有占用的资源
window.ReleaseDispatch();
view.ReleaseDispatch();
range.ReleaseDispatch();
fields.ReleaseDispatch();
field.ReleaseDispatch();
bookmark.ReleaseDispatch();
bookmarks.ReleaseDispatch();
}
else
{
MessageBox("对不起,上一报表正在处理中,请在当前报表打印完毕之后,再生成新的报表!错误");
}
}
}
参考:
[1] 在VC中利用Word生成测量报告
[2] VC6_0中利用word实现报表功能
最后
以上就是羞涩羽毛为你收集整理的VC 6下word操作心得二---以.dot模板生成.doc文档的全部内容,希望文章能够帮你解决VC 6下word操作心得二---以.dot模板生成.doc文档所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复