方法文档 — 使用 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;

寄送此页面
Printer View 打印机视图