有时候软件会有报告生成的功能需求,一般都用MS OFFICE开放的接口来开发,但是MS OFFICE不是免费的,可以考虑用WPS开放的接口。MS OFFICE和WPS的接口其实差不太多。那么具体要怎样才可以用WPS开放的接口生成doc文档报告呢?1、添加TypeLib类型库比如我现在想要点击对话框的一个按钮就开始生成报告,那么在项目的右键菜单中选择“添加”→“类”→“TypeLib中的MFC库”,从注册表中找到关于KingSoft WPS的项, 并在左侧选择要导入的类,如图:
完成类的导入后,把系统自动生成的类的第一行代码(#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();
运行效果如下:
示例代码见附件