Jsp利用pageoffice实现在线excel文档的编辑并保存到服务器
2017-03-30 16:31
615 查看
利用pageoffice实现在线处理excel文档
上周开组会,发现理解错导师的意思了,老师当然希望我能自动的爬取那些信息,但是现在要的很急,希望以半自动的方式去得到这些数据存到数据库,所以这周一直在弄这个。我也是第一次用jsp编程,之前一直用的asp,虽然感觉大同小异,但是仍然是新手。环境
Tomcat 6.0, Myeclipse 2014, PageOffice_2.0.5.2_JAVA,360安全浏览器(chrome、火狐都不支持此插件,有解决办法,但我没研究=。=)
准备工作
寻找到pageoffice的安装包绿色版,按照里面的安装说明.txt测试发现,一定要先安装posetup.exe,再将pageoffice.jar、posetup.exe、seal.mdb、sealsetup.exe四个文件放到lib文件夹中,把包bulid path一下。(之前调试了好半天啊,一修改web.xml就报404错误,后来才发现,根本没装posetup.exe,网上好多讲pageoffice的例子,也没有提到。)
修改web.xml配置文件
粘贴到web.xml里面就行了
<servlet> <servlet-name>poserver</servlet-name> <servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class> </servlet> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/poserver.zz</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/poserver.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/pageoffice.cab</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/popdf.cab</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/sealsetup.exe</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>poserver</servlet-name> <url-pattern>/posetup.exe</url-pattern> </servlet-mapping> <servlet> <servlet-name>adminseal</servlet-name> <servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class> </servlet> <servlet-mapping> <servlet-name>adminseal</servlet-name> <url-pattern>/adminseal.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>adminseal</servlet-name> <url-pattern>/loginseal.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>adminseal</servlet-name> <url-pattern>/sealimage.do</url-pattern> </servlet-mapping> <mime-mapping> <extension>mht</extension> <mime-type>message/rfc822</mime-type> </mime-mapping> <context-param> <param-name>adminseal-password</param-name> <param-value>111111</param-value> </context-param>
编程index.jsp
主要实现加载excel文档,并且在线保存文件到服务器(savefile.jsp)
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page language="java" import="com.zhuozhengsoft.pageoffice.*" %> <!-- 导入包 --> <%@ taglib uri="http://java.pageoffice.cn" prefix="po" %><!-- 不知道这个为啥一定要加上 --> <% /*创建一个新Excel文档并以普通编辑方式在线打开此文档 */ PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage("poserver.do"); //此行必须 poCtrl1.addCustomToolButton("保存","jian()",1);//添加自定义工具栏按钮 ,调用判断js a985 poCtrl1.setFileTitle("请点击工具栏中的保存.xls");//另存为时的默认文件名 poCtrl1.setSaveFilePage("savefile.jsp"); poCtrl1.webCreateNew("苏苏", DocumentVersion.Excel2003); poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须 %>
读了API文件,发现pageoffice设计的还是很方便的,很多接口函数,因为我在页面上定义了控件,我想使文件保存的时候直接以控件的value组合成文件名,所以自己写了js.
<script type="text/javascript"> function Save() { var truthBeTold = window.confirm("是否要保存到服务器?"); if (truthBeTold) { document.getElementById("PageOfficeCtrl1").WebSave(); location.reload();//页面刷新 } else { } } function jian(){ var schoolname=document.getElementsByName("schoolname").item(0).value; var leixing=document.getElementsByName("leixing").item(0).value; var kelei=document.getElementsByName("kelei").item(0).value; var pici=document.getElementsByName("pici").item(0).value; var shengfen=document.getElementsByName("shengfen").item(0).value; var year=document.getElementsByName("year").item(0).value; if(schoolname==""||leixing==""||kelei==""||pici==""||shengfen==""||year=="") { alert("请将信息补充完整!"); } else { Save();//这里调用保存文件的函数 } } </script>
然后把控件加到页面相应的位置就行了:
<div style="height:800px; width:800px;">//这里可以控制控件大小 <po:PageOfficeCtrl id="PageOfficeCtrl1" /> </div>
savefile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page language="java" import="com.zhuozhengsoft.pageoffice.FileSaver" %>//不要忘记导入包 <% FileSaver fs=new FileSaver(request,response); String schoolname=fs.getFormField("schoolname");//获取pageoffice控件所在页面的控件value值,控件一定要有name属性 String leixing=fs.getFormField("leixing"); String kelei=fs.getFormField("kelei"); String pici=fs.getFormField("pici"); String shengfen=fs.getFormField("shengfen"); String year=fs.getFormField("year"); String filename=schoolname+"+"+leixing+"+"+kelei+"+"+pici+"+"+shengfen+"+"+year+".xls"; fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/")+"/"+filename); fs.close(); %>
在保存的时候,一定要注意保存文件的路径,这个默认是在webroot下,我之前调试一直显示保存不成功,在webroot下建立doc文件夹问题就解决了。
虽然这个控件很方便,但是我不知道是浏览器还是控件的问题,测试的时候总是有卡顿的现象,浏览器里面的其他页面都不能点击,有待解决。
本人是一个新手,如果有不对的地方,请大家批评指正。
相关文章推荐
- 用PageOffice实现在线打开、编辑、保存Word文档
- 使用PageOffice实现文档(word,excel,pdf)在线预览编辑
- [置顶] 使用PageOffice实现文档(word,excel,pdf)在线预览编辑
- C#在线打开编辑保存Excel文件[pageoffice]
- PB 利用timer()函数实现定时将数据窗口以excel文档保存至指定地方
- Ubuntu 服务器 PHP实现word、excel、ppt、pdf 等文档在线阅读功能的实现
- PageOffice实现js执行在线编辑时Word文档中的宏命令
- ASP.NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)
- asp.net 在线编辑word文档 可保存到服务器
- PageOffice实现js执行在线编辑时Word文档中的宏命令
- 在线编辑word文档 可保存到服务器
- dsoframer-在线编辑(读取保存服务器文档)
- 在线编辑word文档 可保存到服务器(转)
- C#在线打开编辑保存Excel文件[pageoffice]
- 在线编辑word文档 可保存到服务器
- 在线编辑word文档 可保存到服务器
- 在线编辑word文档 可保存到服务器
- asp.net 在线编辑word文档 可保存到服务器
- pageOffice实现word在线编辑保存功能
- 在线编辑word文档 可保存到服务器