方法文档 — 使用 Webutil 在客户端执行 OLE。
简介
许多表单应用程序利用 OLE 执行与 Windows 桌面的紧密集成。然而,将表单应用程序移动到 Web 时,对 OLE 的调用现在运行于应用程序服务器而不是客户机上。
通常您需要 OLE 访问用户所在的机器,并与客户端的 OLE 服务集成。例如,将数据加载到 Excel 工作表,并将其显示给用户。
WebUtil 向您提供这样的功能:从表单 Java applet 内执行客户端 OLE 集成。
设置
有关设置 WebUtil 的步骤,请参阅作为软件下载一部分的《精通 WebUtil 手册》。
更改代码
请考虑如下的代码:
DECLARE app OLE2.OBJ_TYPE; docs OLE2.OBJ_TYPE; doc OLE2.OBJ_TYPE; selection OLE2.OBJ_TYPE; args OLE2.LIST_TYPE; BEGIN -- create a new document app := OLE2.CREATE_OBJ('Word.Application'); OLE2.SET_PROPERTY(app,'Visible',1); docs := OLE2.GET_OBJ_PROPERTY(app, 'Documents'); doc := OLE2.INVOKE_OBJ(docs, 'add'); selection := OLE2.GET_OBJ_PROPERTY(app, 'Selection'); -- insert data into new document from long item OLE2.SET_PROPERTY(selection, 'Text', :long_item); -- save document as example.doc args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, 'c:\temp\example.doc'); OLE2.INVOKE(doc, 'SaveAs', args); OLE2.DESTROY_ARGLIST(args); -- close example.doc args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, 0); OLE2.INVOKE(doc, 'Close', args); OLE2.DESTROY_ARGLIST(args); OLE2.RELEASE_OBJ(selection); OLE2.RELEASE_OBJ(doc); OLE2.RELEASE_OBJ(docs); -- exit MSWord OLE2.INVOKE(app,'Quit'); END;
此代码为用户打开一个 Word 文档,并在保存及关闭该文件之前,将数据从表单文本域插入到该 Word 文档。要在部署到 Web 时在客户端上执行同样的功能,请附加 WebUtil 对象库及 PL/SQL 库,并用 CLIENT_OLE2 替换 OLE2 的所有实例。
结果代码将像以前一样运行,但将文件写到客户机。
DECLARE app CLIENT_OLE2.OBJ_TYPE; docs CLIENT_OLE2.OBJ_TYPE; doc CLIENT_OLE2.OBJ_TYPE; selection CLIENT_OLE2.OBJ_TYPE; args CLIENT_OLE2.LIST_TYPE; BEGIN -- create a new document app := CLIENT_OLE2.CREATE_OBJ('Word.Application'); CLIENT_OLE2.SET_PROPERTY(app,'Visible',1); docs := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'Documents'); doc := CLIENT_OLE2.INVOKE_OBJ(docs, 'add'); selection := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'Selection'); -- insert data into new document from long item CLIENT_OLE2.SET_PROPERTY(selection, 'Text', :long_item); -- save document as example.doc args := OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, 'c:\temp\example.doc'); CLIENT_OLE2.INVOKE(doc, 'SaveAs', args); CLIENT_OLE2.DESTROY_ARGLIST(args); -- close example.doc args := CLIENT_OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, 0); CLIENT_OLE2.INVOKE(doc, 'Close', args); CLIENT_OLE2.DESTROY_ARGLIST(args); CLIENT_OLE2.RELEASE_OBJ(selection); CLIENT_OLE2.RELEASE_OBJ(doc); CLIENT_OLE2.RELEASE_OBJ(docs); -- exit MSWord CLIENT_OLE2.INVOKE(app,'Quit'); END;
|