MFC vc++ 写 word 文件,使用msword.h 和 msword.cpp

MSDN,所有的类都可以从MSDN查到

Microsoft.Office.Interop.Word 命名空间

msword.h文件在这里

MFC vc++ 写 word 文件,msword.h文件

msword.cpp文件在这里

MFC vc++ 写 word 文件,msword.cpp文件(1)

MFC vc++ 写 word 文件,msword.cpp文件(2)

写一个例子,将msword.h 和 msword.cpp 文件加入到工程

功能是:生成一个doc文件,在文件中写入一个分页符,页脚显示 第n页,共N页

 1 void CcreateDocDlg::OnBnClickedOk()
 2 {
 3     // TODO:  在此添加控件通知处理程序代码
 4     //1.开启word
 5     _Application word_app;
 6     if (!word_app.CreateDispatch(_T("Word.Application"), NULL))//这是office环境
 7     //if (!word_app.CreateDispatch(_T("KWPS.Application"), NULL))//这是wps环境
 8     {
 9         AfxMessageBox(_T("本机没有安装word产品!"));
10         return;
11     }
12     word_app.SetVisible(FALSE);//设置word不可见
13 
14     //2.新建文档
15     COleVariant vTrue((short)TRUE), vFalse((short)FALSE), VOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
16     Documents docs;
17     _Document doc;
18     docs = word_app.GetDocuments();
19     doc = docs.Add(new CComVariant(_T("")), new CComVariant(false), new CComVariant(0), new CComVariant());
20     Selection sel = word_app.GetSelection();
21 
22     CComVariant pageBreak = CComVariant(7);
23     sel.InsertBreak(&pageBreak);//插入分页符
24 
25     Window win = doc.GetActiveWindow();//窗口Window对象
26     Pane pane = win.GetActivePane();//当前活动Pane窗格对象
27     View view = pane.GetView();//View视图对象
28 
29     view.SetSeekView(10);//进入页脚视图
30     Paragraphs wordParagraphs = sel.GetParagraphFormat();
31     wordParagraphs.SetAlignment(2);//0 左 1剧中 2右
32     sel.TypeText(_T(""));
33     Range range = sel.GetRange();
34     Fields fields = range.GetFields();
35     CComVariant preameter1 = CComVariant(33);
36     CComVariant preameter2 = CComVariant(0);//第二个参数填入0在wps下会弹出有个错误框,这里第二个参数填入的字符串好像也没用到随便写一个
37     CComVariant preameter3 = CComVariant(0);
38     Field field = fields.Add(range, &preameter1, COleVariant(_T("wdFieldPage")), &preameter3);//页码
39     sel.TypeText(_T("页 共 "));
40     range = sel.GetRange();
41     fields = range.GetFields();
42     field = fields.Add(range, COleVariant((short)26), COleVariant(_T("wdFieldNumPages")), COleVariant(short(0)));//页数
43     sel.TypeText(_T(""));
44     view.SetSeekView(0);//返回文字视图
45 
46     //4.保存并退出
47     doc.SaveAs(COleVariant(_T("E:\\123.doc")), VOpt, VOpt, VOpt, VOpt, VOpt, VOpt, VOpt, VOpt,
48         VOpt, VOpt, VOpt, VOpt, VOpt, VOpt, VOpt);
49 
50     doc.Close(vFalse, VOpt, VOpt);
51     doc.ReleaseDispatch();
52     docs.ReleaseDispatch();
53     word_app.Quit(VOpt, VOpt, VOpt);
54     word_app.ReleaseDispatch();
55 }

其中的

CreateDispatch(_T("KWPS.Application")是WPS环境
CreateDispatch(_T("Word.Application")是office环境

其他代码不变,都可以生成doc文件
其中分页符、进入页脚视图、页数、总页数等,这些值通过查MSDN可以查到,他们的参数是宏定义
但是编译时,直接写这些宏定义是未定义的,这时就需要查这些宏定义的值了,请参考

MFC vc++ 写 word 文件,宏定义

 

posted @ 2021-02-22 22:17  ckrgd  阅读(1175)  评论(0编辑  收藏  举报