关于 dsoframer.ocx 的资料和API 我这里就不多说了。。百度 google 有很多
但是都是简单的介绍api 对于刚刚接触的人还是很难入手的。
所以我这里主要讲下如何来具体的使用,分享给大家,希望对大家帮助啊:
经过几天的研究,嘎嘎。。战果如下:
这里说明下 各个文件
dsoframer.ocx
大家都认识吧,微软提供的
dsoframer.js
封装了对 dsoframer.ocx 的操作
dsoframer.jsp
显示word的业务界面
dsoframer.CAB
这个是重头戏啊,引用这个文件,
可以在让 dsoframer.ocx 在浏览器中自动下载并注册 当初可弄了老半天的)
至于如何签名自己的 ocx,使其下载并注册,网页也有很多资料。
我这里也提供一个:http://blog.csdn.net/xjzdr/article/details/5991585
流程都好看。最要命的是 里面的 inf 安装文件别写错了,否则就安装失败了,所以要千万记着。
这里偷偷的告诉你们一个秘密: 我是把别人公司的 CAB 安装解压,让回一步一步的模仿写出来的。。嘎嘎
具体是哪个公司,嘿嘿,,不好说。。秘密! 你们可以拷贝我的就好了啊。。
还有一点就是要注意 写版本 FileVersion=2,0,0,0 的时候 是逗号而不是点,不然报错!
下面看具体代码
dsoframer.jsp 界面:
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String id = "1";
%>
<html>
<head>
<title>调查报告</title>
<script language="javascript" src="dsoframer.js"></script>
<script type="text/javascript">
/*用法说明:
1,创建 word对象
2,设置文件上传url
3,在页面加载时,打开word文档,根据是否传人docUrl参数,决定是本地新建,还是从服务器端获取
4,在页面关闭时,执行上传操作。
*/
var word = new word();
//决定路径
word.setUploadUrl("http://127.0.0.1:8070/word/upload_handle.jsp");
var docurl = "";
function load(){
//方法:openDoc(docName, docUrl)
// docName:必填,本地保存的文件名, 也为上传到服务器上时的文件名
// docUrl: 填时,为从服务器端获取doc文档的路径, 不填时,表示本地新建doc文档
word.openDoc('1.doc',"http://127.0.0.1:8070/word/upload/1.doc");
/**
//这里实现读取服务器的模板,并保存到服务器的业务路径中
$.post("/ZsytpServlet",{type:"ajaxWord",id:<%=id%>},function(result){
var dataObj=eval("("+result+")");//转换为json对象
docurl = dataObj.docurl;
if(docurl == ""){
word.openDoc('<%=id%>.doc',"<%=basePath%>/webapps/zsytp/templ/"+dataObj.fhtk+".doc");
document.getElementById('oframe').SetFieldValue("f_name",dataObj.f_name,"");
document.getElementById('oframe').SetFieldValue("m_name",dataObj.m_name,"");
document.getElementById('oframe').SetFieldValue("town",dataObj.town,"");
document.getElementById('oframe').SetFieldValue("f_name1",dataObj.f_name,"");
document.getElementById('oframe').SetFieldValue("m_name1",dataObj.m_name,"");
document.getElementById('oframe').SetFieldValue("sqsj",dataObj.sqsj,"");
document.getElementById('oframe').SetFieldValue("f_name2",dataObj.f_name,"");
document.getElementById('oframe').SetFieldValue("f_birthday",dataObj.f_birthday,"");
document.getElementById('oframe').SetFieldValue("f_hjdz",dataObj.f_hjdz,"");
document.getElementById('oframe').SetFieldValue("m_name2",dataObj.m_name,"");
document.getElementById('oframe').SetFieldValue("m_birthday",dataObj.m_birthday,"");
document.getElementById('oframe').SetFieldValue("m_hjdz",dataObj.m_hjdz,"");
}else{
//实现读取业务路径的内容,并修改
word.openDoc('<%=id%>.doc',"<%=basePath%>/webapps/zsytp/word/"+docurl);
}
});
**/
}
//为了简化,我定义关闭窗口的时候,保存到服务器上面,并且删除本地的临时文件
function unload(){
word.saveDoc();
word.close();
}
//给书签赋值
function setFileVal(){
document.getElementById('oframe').SetFieldValue("dm","2006-03-16 22:22:22","");
}
//插入红头文件
//等等。。网上都有 API
//真正开发的时候,,需要用到的方法,保存文件到服务器上
//可以查看里面的 document.getElementById('oframe').HttpAddPostString("id",id); 等向后台穿参数
function uploadFile(){
//word.saveDocAndParm('1',docurl);
}
</script>
</head>
<body onload="load();" onunload="unload();">
<input type="button" value="保存文件到服务器" onclick="uploadFile()" >
<hr/>
<!--
<object classid="clsid:00460182-9E5E-11d5-B7C8-B8269041DD57" codebase="dsoframer.ocx" id="oframe" width="100%" height="100%">
<param name="BorderStyle" value="1">
<param name="TitlebarColor" value="52479">
<param name="TitlebarTextColor" value="0">
</object>
-->
<object classid="clsid:00460182-9E5E-11d5-B7C8-B8269041DD57" codebase="dsoframer.CAB#Version=2.0.0.0" id="oframe" width="100%" height="100%">
<param name="BorderStyle" value="1">
<param name="TitlebarColor" value="52479">
<param name="TitlebarTextColor" value="0">
</object>
</body>
</html>
upload_handle.jsp 上传的业务代码。。可以自己修改吧。。嘎嘎
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="org.apache.commons.fileupload.util.Streams"%>
<%
try{
// 解析 request,判断是否有上传文件
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
System.out.println("---------"+isMultipart);
if (isMultipart) {
Date date = new Date();//获取当前时间
SimpleDateFormat sdfFolder = new SimpleDateFormat("yyMM");
String fileRealPath = "";//文件存放真实地址
String fileRealResistPath = "";//文件存放真实相对路径
String id="1";//id
String docUrl=""; //路径
String firstFileName="";
String yyMM = sdfFolder.format(date);
//上传文件夹绝对路径
String physicsPath = request.getRealPath("")
+ "\\upload\\" + yyMM + "\\";
File file = new File(physicsPath);
if (!file.isDirectory()) {
file.mkdir();
}
// 创建磁盘工厂,利用构造器实现内存数据储存量和临时储存路径
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置最多只允许在内存中存储的数据,单位:字节
// factory.setSizeThreshold(4096);
// 设置文件临时存储路径
// factory.setRepository(new File("D:\\Temp"));
// 产生一新的文件上传处理程式
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置路径、文件名的字符集
upload.setHeaderEncoding("UTF-8");
// 设置允许用户上传文件大小,单位:字节
upload.setSizeMax(-1);
//upload.setSizeMax(1024 * 1024);
// 解析请求,开始读取数据
// Iterator<FileItem> iter = (Iterator<FileItem>) upload.getItemIterator(request);
// 得到所有的表单域,它们目前都被当作FileItem
BufferedInputStream in = null;
List fileItems = upload.parseRequest(request);
// 依次处理请求
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
// 如果item是正常的表单域
String name = item.getFieldName();
String value = item.getString("UTF-8");
if(name.equals("id"))
id=value;//附件标题赋值
else if(name.equals("docUrl"))
docUrl=value;//附件ID赋值
} else {
// 如果item是文件上传表单域
// 获得文件名及路径
String fileName = item.getName();
if (fileName != null) {
firstFileName=item.getName().substring(item.getName().lastIndexOf("\\")+1);
in = new BufferedInputStream(item.getInputStream());// 获得文件输入流
}
}
}
String formatName = firstFileName.substring(firstFileName.lastIndexOf("."));//获取文件后缀名
if(docUrl != null && !"".equals(docUrl.trim())){
fileRealPath = request.getRealPath("") + "\\word\\" + docUrl;//文件存放真实地址
}else{
fileRealPath = physicsPath + id+ formatName;//文件存放真实地址
docUrl = yyMM + "/" + id + formatName;
}
BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(fileRealPath)));// 获得文件输出流
Streams.copy(in, outStream, true);// 开始把文件写到你指定的上传文件夹
//上传成功,则插入数据库
if (new File(fileRealPath).exists()) {
//虚拟路径赋值
fileRealResistPath=sdfFolder.format(date)+"/"+fileRealPath.substring(fileRealPath.lastIndexOf("\\")+1);
//DB db=new DB();
//System.out.println("!!!"+(String) session.getAttribute("fpsssn")+"&&"+v07.can.myname(session));
//int count = db.executeUpdate("update zy_zsytp set docurl ='"+docUrl+"' where id ='"+id+"'");
//if(count>0){
// response.setContentType("text/html;charset=UTF-8");
// out.print("<script>alert('上传成功!');</script>");
//}
//db.destroy();
//保存到数据库
}
}
}catch(Exception e){
e.printStackTrace();
//response.setContentType("text/html;charset=UTF-8");
//out.print("<script>window.alert('上传失败!文件大小超过1MB!');</script>");
}
%>
效果图:
哈哈。。下面就是 demo 咯。。。
本人的是 word 2003 。。至于 2007 我没测试过啊。。。你们看着办办。。。。
- 大小: 27.9 KB
- 大小: 81.9 KB
分享到:
相关推荐
DSOFramer.ocx 是一个非常实用的 ActiveX 控件,主要用于在 Web 应用程序中实现在线编辑 Office 文档的功能。它允许用户在浏览器环境中内嵌 Office 办公软件,如 Word、Excel 和 PowerPoint,提供了一种无缝集成的...
1. **嵌入文档**:DSOFramer.ocx可以将Word或Excel文档嵌入到应用程序的窗体中,让用户在应用程序内部查看和编辑文档,而无需启动单独的Office应用。 2. **文档操作**:开发者可以通过API调用来控制文档的行为,...
**DSOFramer.ocx控件** 是一个专为软件开发者设计的组件,它主要用于在Windows Forms(WinForm)应用程序中嵌入Office文档,如Word、Excel等。此控件的最新版已经更新以支持Microsoft Office 2016,这意味着开发者...
word在线编辑,加密,书签,等2. HRESULT Open([in] VARIANT Document, [in, optional] VARIANT ReadOnly, [in, optional] VARIANT ProgId, [in, optional] VARIANT WebUsername, [in, optional] VARIANT ...
DsoFramer.ocx是一个OCX文件,即OLE控件,主要用于在应用程序中嵌入和控制Microsoft Office文档,比如Word、Excel或PowerPoint。 【描述】"DsoFramer_V1.3此为最新版源码,修正了对OFFICE2010的支持。" 这段描述...
通过结合dsoframer.ocx,开发者可以在ASP.NET页面上实现Office文档的在线预览和编辑,提升用户体验。 **dsoframer.cab** 文件通常包含dsoframer.ocx组件的安装包,它是 cabinet 文件格式,用于存储和分发软件组件。...
总结起来,DSOFRAMER.OCX是一个强大的OCX控件,为开发者提供了一种便捷的方式来在应用程序中集成Word和Excel文档的查看和编辑功能,无需依赖完整的Microsoft Office环境。它的应用范围广泛,从简单的文档预览到复杂...
- DSOFramer.ocx 是由Microsoft提供的一种ActiveX组件,它为开发人员提供了一个接口,可以将Word、Excel等Office应用程序的界面嵌入到自定义的应用程序中,实现文档的查看、编辑和打印等功能。 - 通过DSOFramer...
【dsoframer.ocx】是微软开发的一个ActiveX控件,主要用于在Web应用程序中实现对Word、Excel和PowerPoint文档的在线编辑功能。ActiveX技术是微软在Internet Explorer浏览器中引入的一种组件模型,允许开发者集成各种...
1. **嵌入Office文档**:通过DSOFramer控件,开发者可以在一个窗体或者对话框中直接嵌入Word、Excel、PowerPoint等Office文档,提供无缝的用户体验,用户可以直接在应用程序内部查看和编辑这些文档,无需打开单独的...
在实际应用中,DSOFramer控件可以广泛应用于各种需要集成Word功能的场景,如报表生成、文档编辑器、在线文档预览等。开发者只需要调用相应的API,就可以轻松地在自己的应用程序中实现Word文档的各种操作,极大地提高...
dsoframer.ocx是一款强大的ActiveX控件,它允许开发者在应用程序中嵌入Microsoft Office文档,如Word、Excel或PowerPoint等,实现对Office文档的动态显示和交互操作。在本次讨论中,我们将聚焦于dsoframer.ocx 2.3....
总之,DSOFramer.ocx接口提供了丰富的功能,使开发人员能够轻松地在网页上集成Office文档处理,创建互动的Web应用,尤其适用于需要在线协作编辑、审批文档的场景。然而,由于ActiveX的安全性和浏览器兼容性问题,...
DSOFramer.ocx 控件主要用于集成在线编辑功能,支持Word与Excel等文件类型的处理。该控件提供了丰富的API接口,可实现文件的新建、打开、保存以及一系列高级功能如修订留痕、设置用户信息等操作。 #### 二、主要...
《DSOFramer在线Word编辑控件详解》 DSOFramer是一款功能强大的ActiveX控件,主要应用于嵌入式在线Word编辑。它允许开发者在桌面软件和Web网页中集成Word编辑功能,极大地提升了用户在非Microsoft Office环境下编辑...
1. 支持Office2007:dsoframer.ocx能够无缝对接Microsoft Office 2007的文档格式,包括Word、Excel、PowerPoint等,用户无需离开网页即可编辑这些文档,极大地提升了工作效率。 2. 在线编辑功能:控件提供丰富的...
使用 DSOFramer.ocx 控件,开发者可以轻松地集成 Office 功能到自己的应用程序中,例如,在 Web 应用程序中嵌入 Excel 表格或 Word 文档编辑功能,提高应用的灵活性和用户友好度。此外,通过对 Dispatch 接口的操作...
DSOFramer.ocx是一款免费且易用的Web在线Office编辑控件,尤其适用于需要在网页中实现Word和Excel文档编辑的应用场景。该控件提供了丰富的接口,允许开发者进行文档的新建、打开、设置属性等操作,极大地提升了网页...
dsoframer.ocx 控件为程序员提供了强大的文档呈现能力,可以方便地在应用程序中嵌入和打印各种类型的文档,如PDF、Word、Excel等。 **主要功能** 1. **文档查看**:dsoframer.ocx 可以加载并显示多种格式的文档,...