首先我们需要导入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,打开内容如下: