金格iWebOffice集成应用实例





















PRIMETON TECHNOLOGIES, LTD.
上海普元信息技术有限责任公司
*二〇一五年六月*

修订记录

版本号

更改时间

更改的章节

更改简要描述

更改人

V1.0

2015-6-4

全部

 

江骥

 

 

 

 

 


























说明

因项目需求在项目中集成word生成及处理,本人在系统中进行金格iWebOffice2009的集成以及开发工作。
首先需要一个 iWebOffice2009.ocx.jsp.Oracle 演示包
下载地址在:
http://www.goldgrid.com/jinge_download/Index.aspx?num=5&firstid=11&flag=0&secondid=10

生成jar包

  1. 打开WEB-INF/classes/DBstep

  1. 修改下 iDBManager.java,因为原来金格采用jdbc的方式,我们这里修改成EOS的默认数据源。


3、将三个文件打成doc.jar

  1. 将这个jar包放在lib目录下(例如我这里就是

/org.gocom.components.coframe.core/eos-web/WEB-INF/lib),
在工程中导入这个jar包
.classpath 文件:

<classpathentry kind="lib"
path="/org.gocom.components.coframe.core/eos-web/WEB-INF/lib/doc.jar"/>


附件:doc.jar

页面调整

  1. 部署文件到系统中

如下图所示,

将下列目录和文件
目录: BookMark、Template
文件:DocumentEdit.jsp、DocumentList.jsp、DocumentSave.jsp、iWebOffice2009.cab、 iWebOffice2009.js、OfficeServer.jsp、SaveToOffice.jsp、test.css
拷到系统工程路径pub(我这边是pub,各位可以自己建立)

  1. 根据项目工程需要,修改目录BookMark、Template.

用于显示金格 书签和模板配置页面
(因为某项目使用utf-8字符集,将文件做下修改)

文件

修改文件内容

BookMark\BookMarkAdd.jsp

1、修改文件字符集
<%@ page contentType="text/html; charset=gb2312" %>
修改为
<%@ page contentType="text/html; charset=UTF-8" %>
2、修改字符编码格式
String mBookMarkName=new String(request.getParameter("BookMarkName").getBytes("8859_1"));
String mBookMarkDesc=new String(request.getParameter("BookMarkDesc").getBytes("8859_1"));
String mBookMarkText=new String(request.getParameter("BookMarkText").getBytes("8859_1"));
修改为
String mBookMarkName=request.getParameter("BookMarkName");
String mBookMarkDesc=request.getParameter("BookMarkDesc");
String mBookMarkText=request.getParameter("BookMarkText");

BookMark\BookMarkAddFrm.jsp
BookMark\BookMarkEdit.jsp
BookMark\BookMarkDel.jsp
BookMark\BookMarkList.jsp
Template\TemplateDel.jsp
Template\TemplateForm.htm
Template\TemplateForm.jsp
Template\TemplateList.jsp
Template\TemplateSave.jsp

1、修改文件字符集
<%@ page contentType="text/html; charset=gb2312" %>
修改为
<%@ page contentType="text/html; charset=UTF-8" %>

BookMark\BookMarkEditFrm.jsp

1、
<%@page contentType="text/html; charset=gb2312" %>
修改为
<%@ page contentType="text/html; charset=UTF-8" %>
2、
<input type="button" name="Del" value="删 除" onclick="javascript:ConfirmDel('BookMarkDel.asp?BookMarkID=<%=mBookMarkID%>');">
修改为
<input type="button" name="Del" value="删 除" onclick="javascript:ConfirmDel('BookMarkDel.jsp?BookMarkID=<%=mBookMarkID%>');">

Template\TemplateEdit.jsp

<%@ page contentType="text/html; charset=gb2312" %>
修改为
<%@ page contentType="text/html; charset=UTF-8" %>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
修改为
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 

  1. 根据项目需求,修改DocumentEdit.jsp、DocumentList.jsp、DocumentSave.jsp、OfficeServer.jsp、SaveToOffice.jsp

并且添加 officeCommon.js、demo.jsp、Result.jsp.
用于word集成界面和demo界面

DocumentEdit.jsp

1、修改页面字符集和错误。
2、添加 fillTableData(填充表格方法)、genTableData(填充表格+标题)、locationCursor(固定光标方法)
3、扩展mReFileName(文件名)、mUserTemplate(模板套红标志)

DocumentList.jsp

  1. 修改页面字符集和去掉部分页面按钮方法。

DocumentSave.jsp

  1. 修改页面字符集。
  2. 修改页面保存成功之后,继续跳转到本页面的功能(Result.jsp)。

OfficeServer.jsp

  1. 修改PutAtBlob、GetAtBlob等方法。
    为了解决在weblogic容器下面,会出现找不到方法的异常问题。

SaveToOffice.jsp

  1. 修改页面字符集。

officeCommon.js

新增页面
1、用于在某项目 coframe的集成js页面

demo.jsp

新增页面
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a996d6c4-1c06-421c-b915-0c80a58ea818"><ac:plain-text-body><![CDATA[1、用于测试[打开word]、[保存word]、[打开模板]、[填充模板]、[填充文档(普通)]、[填充文档(表格)]、[填充文档(表格)]

]]></ac:plain-text-body></ac:structured-macro>

Result.jsp

新增页面
1、用于保存之后,可以选择继续打开当前word


完工之后 文件夹
见附件(office.rar):

安装客户端

金格提供的下载后运行SETUP.EXE的安装方式。需要借助开发示例包中的InstallClinet.zip文件。处理方法如下:
1、打开金格提供的开发示例包(这里用iWebOffice2009产品jsp语言的开发示例包为例),可以找到里面有一个InstallClinet.zip文件。

将InstallClinet.zip文件解压出来,可以看到里面有多个文件。点击setup.exe

弹出提示框

安装完毕即可。

  1. 正常情况这样安装即可。

如果出现安装之后仍然在页面上看不到的情况。
CMD运行:
Regsvr32 C:
"Program Files (x86)"\iWebOffice2009\iWebOffice2009.ocx
见帖子外面的附件(InstallClinet.zip)

初始化数据库脚本

运行目录中DBDemo.Oracle.txt。可以初始化运行环境

配置标签

部署office压缩包代码到工程之下pub之后
运行 http://127.0.0.1:8080/default/pub/office/BookMark/BookMarkList.jsp

点击"增加标签"
填写标签名称、标签说明、标签备注,保存即可

配置模板

部署office压缩包代码到工程之下pub之后
运行 http://127.0.0.1:8080/default/pub/office/Template/TemplateList.jsp

点击新增word模板,打开如下界面;在word文档中,选中一个空格的数据,点击"定义标签"

打开"模板标签管理"页面,点击"请选择标签"

选中一个点击"添加",即可在word模板中添加一个标签。

在后续的开发中,只要将对应的标签进行塞值可以动态展现。

Demo展示和成品展示

在引用的页面只需要
第一:引入officeCommon.js

<script
type="text/javascript" src="<%=contextPath%>/pub/office2003/officeCommon.js"></script>


第二:进入word展示的页面,初始化

var iwo = new iWebOffice();
iwo.init("testDiv");s


第三:调用officeCommon.js中的方法进行一系列的操作。

//查看文件
iwo.loadFile({otype:'view',docid:recordID});

//打印sss
iwo.print();

//编辑
iwo.loadFile({otype:'edit',docid:recordID});

//按模板新增
iwo.loadFile({otype:'add',fileType:'.doc',template:'1428485492306',Subject:'模板测试',UserName:'演示人'});

//空word新增
iwo.loadFile({otype:'add',fileType:'.doc',Subject:'空word测试',UserName:'演示人'});

//保存
iwo.saveData();

//往模板中插值
iwo.pushData({'Author':'test'});

//生成表格
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="9fafe2c8-924b-481c-b647-932501baa9df"><ac:plain-text-body><![CDATA[ var table_data_array = [
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="82286072-d854-4f65-b0e7-c55519ac7431"><ac:plain-text-body><![CDATA[ ['1','登记表'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="47a25ab2-ffb1-4542-8ad2-0bdb9cca4bfe"><ac:plain-text-body><![CDATA[ ['2','申请书'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0e8b4dc3-79ce-4eeb-b9c5-90d87ce9cd19"><ac:plain-text-body><![CDATA[ ['3','证明材料'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="bfb3f100-3a1a-42af-a059-d5d487003951"><ac:plain-text-body><![CDATA[ ['4','证件'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b0aff21b-83b6-491f-b8c7-31ebaa71e739"><ac:plain-text-body><![CDATA[ ['5','信息资料'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="634746c7-d183-4d06-9459-77a4f47964cd"><ac:plain-text-body><![CDATA[ ['6','aaa'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e957d43a-2930-42df-af7b-f53f6fc79ef5"><ac:plain-text-body><![CDATA[ ['7','bbb'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="714d2ae0-6652-4d3b-ae4c-e9c57b45fba4"><ac:plain-text-body><![CDATA[ ['8','ccc']
]]></ac:plain-text-body></ac:structured-macro>
];
iwo.fillTable('testFillTable',table_data_array);

//生成表格+标题
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="46021c3d-eb71-41b9-89ef-5efc4c5ce41a"><ac:plain-text-body><![CDATA[ var table_data_array = [
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e09cf737-3f09-43aa-8137-2d1614071c3f"><ac:plain-text-body><![CDATA[ ['编号','姓名'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="15a344d8-1700-46c6-8aea-8ed0b71adc3a"><ac:plain-text-body><![CDATA[ ['1','江骥'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="6439a3be-6ad5-4295-bccb-68c53795d88b"><ac:plain-text-body><![CDATA[ ['2','肖斌'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1849bedb-79f5-4037-ab68-e41a288c418d"><ac:plain-text-body><![CDATA[ ['3','11明材料'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="d6afcc95-192e-47cf-a65b-0c7acaa6def5"><ac:plain-text-body><![CDATA[ ['4','证111'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4f086ddc-095a-4a37-8e9c-ed2771cfe161"><ac:plain-text-body><![CDATA[ ['5','信息资料'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="320d9c44-6769-4f51-8539-47719940bb75"><ac:plain-text-body><![CDATA[ ['6','aaa'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4b4bb953-a4e6-4d61-b26b-c9c835999d5d"><ac:plain-text-body><![CDATA[ ['7','bbb'],
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="3401b553-f39f-461b-88bb-f21afc78c794"><ac:plain-text-body><![CDATA[ ['8','ccc']
]]></ac:plain-text-body></ac:structured-macro>
];
iwo.genTable('genTable',table_data_array,'Title','***测试此表格的标题***');



Demo展示 



iWebOffice控件更换版本


若需要更换版本,只需要修改或者替换
iWebOffice2009.js、iWebOffice2009.cab
比方说从iWebOffice2009替换成 iWebOffice2003
1、只需要替换掉 iWebOffice2009.cab ,改为 iWebOffice2003.ocx
2、然后修改iWebOffice2009.js中

var str = '';
str += '<object id="WebOffice" width="100%" height="100%" classid="clsid:8B23EA28-2009-402F-92C4-59BE0E063499" codebase="iWebOffice2009.cab#version=10,8,0,2">';
str += '</object>';
document.write(str);

为 iWebOffice2003.js

var str = '';
str += '<object id="WebOffice" width="100%" height="100%" classid="clsid:23739A7E-5741-4D1C-88D5-D50B18F7C347" codebase="iWebOffice2003.ocx#version=8,2,6,0">';
str += '</object>';
document.write(str);