VC 6下word操作心得二---以.dot模板生成.doc文档
2012-03-04 14:37
447 查看
(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)添加代码
参考:
[1] 在VC中利用Word生成测量报告
[2] VC6_0中利用word实现报表功能
(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实现报表功能
相关文章推荐
- 操作Word模板文件.dot 结合具体数据 生成Word文档 .doc
- 操作Word模板文件.dot 结合具体数据 生成Word文档 .doc
- VC 6下word操作心得-将文字写入word
- 操作Word模板文件.dot 结合具体数据 生成Word文档 .doc
- C#动态生成WORD文档并进行操作。
- Aspose.Words操作word生成PDF文档
- JAVA根据ftl模板生成需要的多表格word文档
- PHPWord利用模板替换字符串生成精确的word文档
- 利用freemarker 在模板里面写入动态数据,动态表格,图片插入并生成word文档
- asp.net mvc 模板生成word文档
- Java Web项目中使用freemarker操作flt生成带图片(base64)的Word文档
- freemarker根据模板生成word文档,换行
- java IO 基于模板文件替换字符生成word文档
- velocity模板技术生成word文档
- 利用freemarker 在模板里面写入动态数据,动态表格,图片插入并生成word文档
- Java POI通过模板方法生成word文档
- 使用poi操作模板文件重新生成新的word表单文件
- 使用 Open XML 操作文档模板自动生成报表
- 根据数据及模板生成word文档
- java根据ftl模板生成word文档