有时候软件会有报告生成的功能需求,一般都用MS OFFICE开放的接口来开发,但是MS OFFICE不是免费的,可以考虑用WPS开放的接口。MS OFFICE和WPS的接口其实差不太多。
       那么具体要怎样才可以用WPS开放的接口生成doc文档报告呢?
       1、添加TypeLib类型库
               比如我现在想要点击对话框的一个按钮就开始生成报告,那么在项目的右键菜单中选择“添加”→“类”→“TypeLib中的MFC库”,从注册表中找到关于KingSoft WPS的项, 并在左侧选择要导入的类,如图:

225156201.jpg


            完成类的导入后,把系统自动生成的类的第一行代码(#import那行)注释了。
       2、使用
           在要用到类型库的地方包含相应的头文件,就可以使用了。具体用哪个函数,就找与你要的操作单词意思接近的函数,多琢磨琢磨就会了,再不行就到WPS的论坛去问好了。
           简单示例代码:


#include "CApplication.h"
    #include "CDocuments.h"
    #include "CDocument0.h"
    #include "CnlineShapes.h"
    #include "CRange.h"
    #include "CSelection.h"
    #include "CTables0.h"
    #include "CTable0.h"
    #include "CCell.h"
    CApplication app;
    app.CreateDispatch(_T("WPS.APPLICATION"));
    app.put_Visible(TRUE);
    CDocuments docs = app.get_Documents();
    docs.Add(COleVariant(_T("")), false, 0, true);
    CSelection sel = app.get_Selection();
    sel.TypeText(_T("hello! 这是个WPS二次开发的简单例子"));
    sel.TypeParagraph();
    sel.TypeText(_T("测试表格:"));
    sel.TypeParagraph();
    COleVariant vTrue((short)TRUE);
    COleVariant vFalse((short)FALSE);
    COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    CnlineShapes shapes = sel.get_InlineShapes();
    shapes.AddPicture(_T("G:\\pictures\\girl.jpg"), &vFalse, &vTrue, &vOpt);
    CDocument0 doc = app.get_ActiveDocument();
    CRange range = sel.get_Range();
    CTables0 tabs = doc.get_Tables();
    COleVariant defaultBehavior((short)1);
    COleVariant AutoBehavior((short)0);
    CTable0 tab = tabs.Add(range, 7, 4, defaultBehavior, AutoBehavior);
    for (int i=0; i<=7; i++)
    {
        for (int j=0; j<=4; j++)
        {
            CCell cell = tab.Cell(i, j);
            cell.Select();
            CString str;
            str.Format(_T("%d, %d"), i, j);
            sel.TypeText(str);
        }
    }
    sel.Move(long(2), long(100));
    sel.TypeParagraph();
    sel.put_Style(COleVariant(_T("标题 1")));
    sel.TypeText(_T("标题 1"));
    sel.TypeParagraph();
    sel.put_Style(COleVariant(_T("标题 3")));
    sel.TypeText(_T("标题 3"));
    sel.TypeParagraph();
    sel.put_Style(COleVariant(_T("正文")));
    sel.TypeText(_T("正文"));
    sel.TypeParagraph();
    sel.DetachDispatch();
    shapes.DetachDispatch();
    app.DetachDispatch();


  运行效果如下:

225324979.jpg


示例代码见附件