MFC中操作Word文档

        首先我们需要导入word类库(电脑上需要安装了word),左击项目,点击类向导,添加类(C)选择类型库中的MFC类。本文章案例可点击下载。

         然后选择文件,位置选择从office安装目录中找到MSWORD.OLB文件,然后点击>>添加所有类。

         添加完成后,点击完成。

         可以发现word库已经被添加进来了,如下图:

         然后导入如下头文件,并且注释掉以下头文件(.h文件)的里面import导入的内容:

#include "CApplication0.h"   
#include "CDocuments0.h"    
#include "CDocument1.h"    
#include "CSelection0.h"     
#include "CRange0.h"      
#include "CBookmark1.h"    
#include "CBookmarks0.h" 
#include "CnlineShape.h" 
#include "CnlineShapes.h" 
需要注释的代码段

         然后,自己新建一个模板文档(.dot,或者随便新建一个word然后另存为dot,如下下图),在对应位置插入书签,因为这个是后面程序插入数据通过书签确定插入位置。

         最后提供一个简单插入数据的代码示例:

COleVariant    covZero((short)0),
		covTrue((short)TRUE),
		covFalse((short)FALSE),
		covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),
		covDocxType((short)0),
		start_line, end_line,
		dot(_T("C:\\Users\\Admin\\Desktop\\tmp.dot"));

	CApplication0 wordApp;
	CDocuments0 docs;
	CDocument1 docx;
	CBookmarks0 bookmarks;
	CBookmark1 bookmark;
	CRange0 range;
	CnlineShapes pInShapes;

	if (!wordApp.CreateDispatch(_T("Word.Application")))
	{
		AfxMessageBox(_T("本机没有安装word产品!"));
		return;
	}

	wordApp.put_Visible(FALSE);
	CString wordVersion = wordApp.get_Version();
	docs = wordApp.get_Documents();
	docx = docs.Add(dot, covOptional, covOptional, covOptional);
	bookmarks = docx.get_Bookmarks();

	CSelection0 sel = wordApp.get_Selection();//获取文档的selection
	pInShapes = sel.get_InlineShapes();

	//获取系统时间
	CString currentTime = CTime::GetCurrentTime().Format("%Y%m%d");

	//通过书签写入数据到word模板中
	bookmark = bookmarks.Item(&_variant_t(_T("title")));
	range = bookmark.get_Range();
	range.put_Text(currentTime);
	bookmark = bookmarks.Item(&_variant_t(_T("data1")));
	range = bookmark.get_Range();
	range.put_Text(_T("aaaaa"));
	bookmark = bookmarks.Item(&_variant_t(_T("data2")));
	range = bookmark.get_Range();
	range.put_Text(_T("bbbbb"));
	bookmark = bookmarks.Item(&_variant_t(_T("data3")));
	range = bookmark.get_Range();
	range.put_Text(_T("ccccc"));

	CString strSavePath = _T("C:\\Users\\Admin\\Desktop\\");
	strSavePath += (CString("word") + currentTime + CString(".docx"));
	docx.SaveAs(COleVariant(strSavePath), covOptional, covOptional, covOptional, covOptional,
		covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional);

	// 退出word应用
	docx.Close(covFalse, covOptional, covOptional);
	wordApp.Quit(covOptional, covOptional, covOptional);
	pInShapes.ReleaseDispatch();
	sel.ReleaseDispatch();
	range.ReleaseDispatch();
	bookmarks.ReleaseDispatch();
	wordApp.ReleaseDispatch();
	AfxMessageBox(strSavePath + "生成成功!");

        运行后生成word,打开内容如下:

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值