• 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 文件,宏定义

  • 相关阅读:
    openvswitch 监听端口变化
    Python set() 函数
    openstack-neutron-OVS agent分析
    openvswitch ovs-appctl 使用
    python setup.py install 报错【Project namexxx was given, but was not able to be found.】
    openstack nova 创建虚机流程
    Linux kernel 模块 hello 测试
    openvswitch 流表操作
    软件测试开发之第一篇(测试文档)
    Java工具之Myeclipse程序调试
  • 原文地址:https://www.cnblogs.com/ckrgd/p/14433271.html
Copyright © 2020-2023  润新知