欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    DSOframer接口说明 .doc

    • 资源ID:2883047       资源大小:162KB        全文页数:26页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DSOframer接口说明 .doc

    Office在线编辑功能实现1 DSOFramer控件说明DSOFramer.ocx控件是微软提供一款开源的用于在线编辑、调用Word、 Excel 、PowerPoint等的ActiveX控件。国内很多著名的OA中间件,电子印章,签名留痕等大多数是依此改进而来的。只要本地安装注册DSOFramer控件,并且安装了OFFICE软件,即可实现其强大的在线编辑功能。1.1 DSOFramer控件接口在jsp页面中添加如下脚本代码,实现控件的引用:<OBJECT classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" id="FramerControl1" style="LEFT:0px; TOP:0px; WIDTH:100%; HEIGHT:750px" CodeBase="dsoframer.ocx#version=2,3,0,0"> <PARAM NAME="_ExtentX" VALUE="6350"> <PARAM NAME="_ExtentY" VALUE="6350"> <PARAM NAME="BorderColor" VALUE="-2147483632"> <PARAM NAME="BackColor" VALUE="-2147483643"> <PARAM NAME="ForeColor" VALUE="-2147483640"> <PARAM NAME="TitlebarColor" VALUE="-2147483635"> <PARAM NAME="TitlebarTextColor" VALUE="-2147483634"> <PARAM NAME="BorderStyle" VALUE="1"> <PARAM NAME="Titlebar" VALUE="0"> <PARAM NAME="Toolbars" VALUE="1"> <PARAM NAME="Menubar" VALUE="1"> </OBJECT>1.1.1 新建文档/新建Word/document.all.FramerControl1.CreateNew("Word.Document");/新建Exceldocument.all.FramerControl1.CreateNew("Excel.Sheet");1.1.2 打开文档/打开制定的本地文件document.all.FramerControl1.Open("C:TestBook.xls");/制定用Word来打开c:plain.txt文件document.all.FramerControl1.Open("C:Plain.txt",false, "Word.Document");/打开服务器的文件 document.all.FramerControl1.Open "https:/secureserver/test/mytest.asp?id=123",true, "Excel.Sheet", "MyUserAccount", "MyPassword");/打开服务器的文件 document.all.FramerControl1.Open("http:/localhost/1.doc", true);1.1.3 保存文档*/到本地document.all.FramerControl1.Save("c:1.doc",true);/服务器 /*增加Http协议Post上传接口,可以Post一个动态页面(jsp,asp,php.),由动态页面负责解析数据bool HttpInit();bool HttpAddPostString(BSTR strName, BSTR strValue);bool HttpAddPostCurrFile(BSTR strFileID, BSTR strFileName);BSTR HttpPost(BSTR bstr); */初始化Http引擎document.all.FramerControl1.HttpInit();/增加Post变量document.all.FramerControl1.HttpAddPostString("RecordID","20060102200");document.all.FramerControl1.HttpAddPostString("UserID","李局长");/上传打开的文件document.all.FramerControl1.HttpAddPostCurrFile("FileData", "文档名.doc");/执行上传动作document.all.FramerControl1.HttpPost(" 1.1.4 修订痕迹/进入留痕状态document.all.FramerControl1.SetTrackRevisions(1);/进入非留痕状态document.all.FramerControl1.SetTrackRevisions(0);/接受当前修订document.all.FramerControl1.SetTrackRevisions(4);1.1.5 设置当前用户document.all.FramerControl1.SetCurrUserName("张三"); 1.1.6 设置和创建书签,此功能比较强大,设置书签数据、添加书签和添加红头文件SetFieldValue(BSTR strFieldName, BSTR strValue, BSTR strCmdOrSheetName)strFieldName:书签名strValue:要设置的值strCmdOrSheetName:命令 :ADDMARK: 添加BookMark:DELMARK: 删除这个BookMark:GETMARK: 定位到这个BookMark:FILE: 插入的是文件:JPG: 插入的是图片一般来说:WORD中书签是做好的,可以通过此接口把外界数据设置进书签中去。*/在当前WORD位置插入标签,标签名为"book1",数值为"test"document.all.FramerControl1.SetFieldValue("book1","test",":ADDMARK:");/设置书签"Time",数值为"2006-03-16 22:22:22"document.all.FramerControl1.SetFieldValue("Time","2006-03-16 22:22:22","");/在书签位置"hongtou",插入红头文件"http:/222.222.222.222/hongtou1.doc" 这样,红头就自动插进去了document.all.FramerControl1.SetFieldValue("hongtou","http:/222.222.222.222/hongtou1.doc",":FILE:");1.1.7 删除本地文件HRESULT DeleteLocalFile(in BSTR strFilePath); 参数: strFileName:文件本地路径,如c:11.doc 1.1.8 创建临时文件HRESULT GetTempFilePath(out,retval BSTR* strValue); 返回: 临时文件的路径地址。使用完后,用DeleteLocalFile 删除1.1.9 下载远程文件HRESULT DownloadFile( in BSTR strRemoteFile, in BSTR strLocalFile, out,retval BSTR* strValue); 参数: strRemoteFile:远程路径地址,http or Ftp strLocalFile: 本地保存地址,if strLocalFile = NULL then Create Temp File and return TempFile's Path1.1.10 增加Http上传时候的,附加其他文件HRESULT HttpAddPostFile(in BSTR strFileID, in BSTR strFileName, out,retval long* pbool);参数: strFileID:文件的ID,供服务器端页面解析 strFileName: 本地文件地址 1.2 在Unieap中的应用我们现在以实例演示在Unieap框架中使用,首先在数据库中创建一张TEST_WORD表:CREATE TABLE TEST_WORD ( ROW_ID NUMBER NOT NULL, CONTEXT BLOB, PRIMARY KEY (ROW_ID) )其中CONTEXT字段用于保存文件,其类型为BLOB。1.2.1 修改*-ORACLE.XML文件由于ORACALE数据库对BLOB类型数据插入的限制,导致当新增一条数据的时候无法直接插入数据到BLOB类型的字段中,所以我们必须:1. 插入一条BLOB类型字段为空的记录。2. 对刚才新插入的那条数据执行更新操作,将文件数据以字节数组形式更新到对应的BLOB类型字段中。所以我们要修改DAO层下的*-ORACLE.XML文件:<statement id="update-by-vo" parameterClass="WordVO"> <!CDATA UPDATE TEST_WORD SET CONTEXT=#tw_CONTEXT# WHERE ROW_ID=#tw_ROW_ID# ></statement><statement id="insert-by-vo" parameterClass="WordVO"> <!CDATA INSERT INTO TEST_WORD(ROW_ID,CONTEXT) VALUES(#tw_ROW_ID#,empty_blob() ></statement>1.2.2 修改VO对于BLOB类型的字段,使用代码生成器生成的VO所对应的字段类型是String的,所以要修改为byte类型,代码如下:private byte tw_CONTEXT; public byte getTw_CONTEXT() return tw_CONTEXT; public void setTw_CONTEXT(byte tw_CONTEXT) this.tw_CONTEXT = tw_CONTEXT;1.2.3 修改FORM因为页面的WORD文件需要通过FORM传到后台,所以在form中对应于BLOB类型字段的变量就不能为String类型了,而是设置为FormFile类型:private FormFile tw_CONTEXT;public FormFile getTw_CONTEXT() return tw_CONTEXT; public void setTw_CONTEXT(FormFile tw_CONTEXT) this.tw_CONTEXT = tw_CONTEXT;public EAPValueObject transform() WordVO vo = new WordVO(); vo.setTw_ROW_ID(EAPDataFormat.parseString(tw_ROW_ID, vo.getTw_ROW_ID(); try InputStream inputStream = tw_CONTEXT.getInputStream(); vo.setTw_CONTEXT(getBytes(inputStream); catch(Exception ex) return vo; /将InputStream类型转换为字节数组public static byte getBytes(InputStream is) throws Exception byte data = null; Collection chunks = new ArrayList(); byte buffer = new byte1024*1000; int read = -1; int size = 0; while(read=is.read(buffer)!=-1) if(read>0) byte chunk = new byteread; System.arraycopy(buffer,0,chunk,0,read); chunks.add(chunk); size += chunk.length; if(size>0) ByteArrayOutputStream bos = null; try bos = new ByteArrayOutputStream(size); for(Iterator itr=chunks.iterator();itr.hasNext();) byte chunk = (byte)itr.next(); bos.write(chunk); data = bos.toByteArray(); finally if(bos!=null) bos.close(); return data; /* * 父类抽象方法实现 * 将传入的数据对象(VO)对应到当前表单 * 建议使用EAPDataFormat.toString()进行类型转换 * */ public void transform(EAPValueObject _vo) WordVO vo = (WordVO)_vo; tw_ROW_ID = EAPDataFormat.toString(vo.getTw_ROW_ID(); 注意:其中将传入的数据对象(VO)对应到当前表单方法中不需要对VO中的BLOB类型字段做转换。1.2.4 修改DAO前面我们已经说过了,由于ORACLE本身的限制,在对BLOB类型数据新增操作的时候需要执行先插入空BLOB在更新BLOB类型字段操作,所以修改代码如下:public boolean doInsertByVO(EAPValueObject vo) throws EAPDAOException boolean result = true; WordVO wordVO = (WordVO)vo; try result = daoCommand.sm_insert(this.getNameSpace()+"."+SQL_INSERT_BY_VO, vo); if(result) result = doUpdateByVO(wordVO); return result; catch(Exception ex) throw new EAPDAOException(ex); public boolean doUpdateByVO(EAPValueObject vo) throws EAPDAOException try return daoCommand.sm_update(this.getNameSpace()+"."+SQL_UPDATE_BY_VO, vo); catch(Exception ex) throw new EAPDAOException(ex); 1.2.5 修改Service添加doGetFileData方法:public void doGetFileData(EAPRequest eapReq, EAPResponse eapResp) throws EAPServiceException commonBizInvoke(eapReq, eapResp, new EAPBizServiceHandleImpl(false) public boolean process(EAPRequest eapReq, EAPResponse eapResp) long idList = (long)eapReq.getDefaultData(); EAPValueObject vo = null; EAPBizBO bo = getActiveBO(); if(bo!=null && idList!=null) vo = bo.doFind(eapReq.getUserToken(), idList0); WordVO wordVO = (WordVO)vo; eapResp.setData("Tw_CONTEXT_BYTE",wordVO.getTw_CONTEXT(); eapResp.setDefaultData(vo); return true; );1.2.6 修改Action添加doGetFileData方法:public ActionForward doGetFileData(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception return monBizInvoke(mapping, form, request, response, this.getServiceName(), "doGetFileData", new EAPBizActionHandleImpl() public boolean assembleRequest(EAPBizRequestEvent reqEvent) long idList = new long1; idList0 = Long.parseLong(reqEvent.getHttpRequest().getParameter("rowId"); reqEvent.getEAPRequest().setDefaultData(idList); return true; public ActionForward assembleResponse(EAPBizResponseEvent respEvent) assembleResponseForm(respEvent.getHttpRequest(), respEvent.getForm(), respEvent.getEAPResponse(); assembleResponseResult(respEvent.getHttpRequest(), respEvent.getEAPResponse(); respEvent.getHttpRequest().setAttribute("FILE_DATA",(byte)respEvent.getEAPResponse().getData("Tw_CONTEXT_BYTE"); return respEvent.getMapping().findForward("getFileData"); );1.2.7 修改模块的struts-config.xml文件添加一个页面重定向路径:<forward name="getFileData" path="/jsp/srm/test/testword/word/ReadData.jsp"/>1.2.8 添加jsp等相关文件1. 添加加载数据库文件数据的jsp文件:ReadData.jsp,脚本代码如下:<%/ <% page import="java.io.ByteArrayInputStream" %> ServletOutputStream sos=response.getOutputStream(); try /String type = request.getParameter("type") = null ? "image/pjpeg" : request.getParameter("type"); response.setContentType("application/msword"); int len = (byte)request.getAttribute("FILE_DATA").length; InputStream stream = new ByteArrayInputStream(byte)request.getAttribute("FILE_DATA"); sos.write(byte)request.getAttribute("FILE_DATA"),0,len); sos.close(); catch(Exception ex) %>2. 添加dsoframer.ocx文件统一放置在一个公用的配置文件夹中。3. 添加模板文件统一将业务需求的所有模板文件放置于一个公用的文件夹中。1.2.9 修改adddEdit.jsp页面我们将在这里加载DSOFramer控件,实现在线office文档编辑、保存、上传等操作,代码如下:<% String bundleKey = "srm.test.testword.word" String url = request.getRequestURL().toString(); String path = request.getContextPath(); url = url.substring(0, url.lastIndexOf(path)+path.length(); String urlHead = url.substring(0,url.indexOf("jsp"); String rowId = wordForm.getTw_ROW_ID();%><SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>/* 打开服务器文档 */function command_onclick_openServer() document.all.FramerControl1.Open("<%=url%>/test/testword/word/template1.doc", true);/* 以服务器模板文档创建新文档 */function command_onclick_openModelDocu() document.all.FramerControl1.CreateNew("<%=url%>/test/testword/word/template1.doc"); document.all.FramerControl1.SetFieldValue("MTL_NAME","交换机",""); document.all.FramerControl1.SetFieldValue("COUNT","9999",""); document.all.FramerControl1.SetFieldValue("SKU","台",""); document.all.FramerControl1.SetFieldValue("AMT","999999","");/* 插入红头文件 */function command_onclick_insertFile() document.all.FramerControl1.CreateNew("<%=url%>/test/testword/word/template1.doc"); document.all.FramerControl1.SetFieldValue("title","<%=url%>/test/testword/word/redTitle.doc",":FILE:");/* 打开数据库文档 */function command_onclick_openDatabase() var url = "<%=urlHead%>test/testword/word/Word.do?method=doGetFileData&rowId=”<%= rowId %>”&type=application/msword" alert(url); document.all.FramerControl1.Open(url, false, "Word.Document", "", ""); /* 将文档作为大对象保存到数据库 */function command_onclick_saveToDatabase() var success = SaveDocumentToDB(); if (success = true) alert("Save Word Document success"); else alert("Save error! Please try again after!"); return false;/* 保存到本地临时文档 */function command_onclick_save() document.all.FramerControl1.Save("c:temp.doc",true);/* 关闭文档 */function command_onclick_close() document.all.FramerControl1.Close();/* 删除本地临时文档 */function command_onclick_delete() /请注意不能删除正被打开的文件,所以上传完后要先关闭文件再删除。 command_onclick_close(); document.all.FramerControl1.DeleteLocalFile("c:temp.doc");/* 保存文件到数据库,同时将文档另存为本地HTML文件后一起传到服务器端 */function SaveDocumentToDB() /初始化Http引擎 document.all.FramerControl1.HttpInit(); /模拟表单域,设置参数 document.all.FramerControl1.HttpAddPostString("SCSJ","2008-5-16 00:00:00"); document.all.FramerControl1.HttpAddPostString("GZLJDID","2"); /上传打开的文件 document.all.FramerControl1.HttpAddPostCurrFile("tw_CONTEXT", ""); /执行上传动作 var url = "<%=urlHead%>test/testword/word/Word.do?method=doAdd" try var tar = document.all.FramerControl1.HttpPost(url); catch(e) return false; finally return true;/* 文档对象初始化 */function FramerControl1_Init() document.all.FramerControl1.CreateNew("Word.Document"); document.all.FramerControl1.ActiveDocument.Content.text = "测试员,你好!"</SCRIPT><SCRIPT LANGUAGE=javascript FOR=FramerControl1 EVENT=NotifyCtrlReady><!- FramerControl1_Init();/-></SCRIPT><BODY class=singleDetailBody onload="FramerControl1_Init();"><%include file="/platform/jsp/include/popIframe.jsp" %><html:form action="test/testword/word/Word.do" method="post" enctype="multipart/form-data"><html:hidden property="method"/><html:hidden property="doWhat"/><html:hidden property="doWhatPlus"/><input type="hidden" name="programId" v

    注意事项

    本文(DSOframer接口说明 .doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开