首先要有个weboffice.cab文件,解压后里边有个ocx控件是主体
js页面Loadweboffice.js配置文件指向
var s = "";
//var height = parent.document.getElementById("PrjList").scrollHeight;
// var height = document.body.clientHeight;
// height = height - 50;
s += "<object id=WebOffice1 height=768 width='100%' style='LEFT: 0px; TOP: 0px' classid='clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5' codebase='WebOffice.cab#Version=7,0,1,8'>"
s +="<param name='_ExtentX' value='6350'><param name='_ExtentY' value='6350'>"
s +="</OBJECT>"
if (navigator.userAgent.indexOf("Chrome") > 0) {
alert("test");
s="";
s = "<object id='WebOffice1' type='application/x-itst-activex' align='baseline' border='0'"
+ "style='LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 600px'"
+ "clsid='{E77E049B-23FC-4DB8-B756-60529A35FAD5}' codebase='WebOffice.cab#Version=7,0,1,8'"
+ "event_NotifyCtrlReady='WebOffice1_NotifyCtrlReady'>"
+ "</object>";
}
if (navigator.userAgent.indexOf("Firefox") > 0) {
alert("fox");
s="";
s = "<object id='WebOffice1' type='application/x-itst-activex' align='baseline' border='0'"
+ "style='LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 600px'"
+ "clsid='{E77E049B-23FC-4DB8-B756-60529A35FAD5}' codebase='WebOffice.cab#Version=7,0,1,8'"
+ "event_NotifyCtrlReady='WebOffice1_NotifyCtrlReady'>"
+ "</object>";
}
document.write(s)
里边虽然写了谷歌火狐的运行方式,但是不支持,IE内核的都可以,腾讯系的浏览器,360,IE,edg,傲游等都可以
最后在调用weboffice1就好了
webObj.LoadOriginalFile(opurl, "doc");打开文件
webObj.InSertFile("http://114.115.133.183:5040/"+qrcodename+".jpg", 9);插入图片
关于office在线更改数据保存到服务器上:
第一步,初始化HTTP。office.HttpInit();
第二步,由于weboffice的提交数据跟平常的form表单的提交没什么区别,因此我们可以在此进行附加一些其他的数据,如文件名。office.HttpAddPostString("fileName", fileName);
第三步,将我们需要保存的文档附加进来。office.HttpAddPostCurrFile("xxxxx", '');
这里说一下第三步,office.HttpAddPostCurrFile("xxxxxx", '');
在接收的jsp页面用item.getfieldname的方法得到的是内容"xxxxx"
第四步,将数据提交到一个php或jsp的接收页。office.HttpPost("./resources/jsp/upload.jsp");
这四步,除了第二步之外其他的三步都是必不可少的。
后端接收的核心代码:
与表单提交一样,读取request对象
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
DiskFileItemFactory factory=new DiskFileItemFactory();
// factory.setRepository(new File(savePath+"/temp"));// 设置缓冲区目录
ServletFileUpload fu=new ServletFileUpload(factory);
//设置允许用户上传文件大小,单位:字节
fu.setSizeMax(100000000);
List fileItems = fu.parseRequest(request);
//System.out.println(fileItems.get(0));
Iterator<FileItem> itr = fileItems.iterator();//所有的表单项
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();//循环获得每个表单项
最后的item里边存有一个一个临时数据文件,写入之后应该是直接销毁,上边携带的数据xxxx在item里边的fieldname这个变量里,可携带的字节数也比较大。item有一个流输出的方法查看,不过存word过来的数据在控制台上边显示是乱码。反正最后item.write(地址)保存出来的东西是正常的就好了。