文章目录
- 前言
- 一、pageOffice是什么?
- 二、使用步骤
- 1.引入库
- 2.配置pageOffice
- 3.控制器的书写
- 总结
前言
pageOffice是一款可以在线编辑word、excel等office的插件,使用起来相对友好,主要是它自身的作用仅仅是在线编辑office,并不与数据库有任何绑定
提示:以下是本篇文章正文内容,下面案例可供参考
一、pageOffice是什么?
长期以来,B/S架构的Web应用系统在处理Office文档时都面临两大技术难题。一个是如何在网页里在线编辑Office文档,另一个是如何读写Office文档里的内容。对于在线编辑Office文档这个问题,刚刚接触此需求的开发人员大多采用的是集成一个能调用Office的ActiveX控件,但是运行稳定性、兼容性差强人意,而且调用代码只能用JavaScript,造成项目的逻辑层次被打乱,业务层和表现层混在一起,可维护性差。对于读写Office文档问题,有用服务器自动化技术(ASP.NET引入Office类型库,Java用Jacob库)读写Word、Excel的,代码复杂、运行稳定性差,并且服务器只能采用Windows平台;有用POI库的,代码复杂、只能读写格式简单的Word、Excel文档,并且POI提供的Office2003、Office2007文档格式的调用接口还不兼容,进一步增加了调用代码的复杂度
二、使用步骤
1.引入库
将pageOffice的依赖进行管理,现将pageOffice进行全局管理起来然后再引入,执行以下代码将pageOffice加入MVN
mvn install:install-file -DgroupId=com.zhuozhengsoft -DartifactId=pageoffice -Dversion=5.2.0.8 -Dpackaging=jar -Dfile=pageoffice5.2.0.8.jar
pageOffice依赖加载进来,本项目采用的是thymeleaf作为pageOffice展示的界面
<dependency>
<groupId>com.zhuozhengsoft</groupId>
<artifactId>pageoffice</artifactId>
<version>5.2.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.配置pageOffice
代码如下(示例):
@Bean
public ServletRegistrationBean servletRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
poserver.setSysPath(poSysPath);//设置PageOffice注册成功后,license.lic文件存放的目录
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/posetup.exe");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/jquery.min.js");
srb.addUrlMappings("/pobstyle.css");
srb.addUrlMappings("/sealsetup.exe");
return srb;
}
3.控制器的书写
本文仅以简单案例展示,
@Value("${docpath}")
private String docPath;
@GetMapping(value = "/invest/word")
public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) {
// 假设文件名为test.doc
String fn = "test.doc";
// 用户
String userName = "lisi";
// 落库
// 基础配置
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
poCtrl.setServerPage("/poserver.zz");//设置服务页面
// 自定义按钮
poCtrl.addCustomToolButton("保存", "Save", 1);//添加自定义保存按钮
// poCtrl.addCustomToolButton("盖章","AddSeal",2);//添加自定义盖章按钮
poCtrl.addCustomToolButton("打印设置", "PrintSet", 0);//打印设置
poCtrl.addCustomToolButton("打印", "PrintFile", 6);//打印
poCtrl.addCustomToolButton("全屏/还原", "IsFullScreen", 4);//全屏/还原
poCtrl.addCustomToolButton("-", "", 0);//下划线
poCtrl.addCustomToolButton("关闭", "Close", 21); // 关闭
// 控件标题栏内容
poCtrl.setCaption("鹰潭办公系统");
// 文档加载完成后执行js
poCtrl.setJsFunction_AfterDocumentOpened("AfterDocumentOpened()");
//设置并发控制时间
poCtrl.setTimeSlice(20);
// 设置保存文件请求路径
poCtrl.setSaveFilePage("/save");//设置处理文件保存的请求方法
// // 设置保存数据请求路径
// poCtrl.setSaveDataPage("/save/data");
//打开word
String filePath = "file://" + docPath + fn;
// 强制留痕模式
poCtrl.webOpen(filePath, OpenModeType.docRevisionOnly, userName);
map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
ModelAndView mv = new ModelAndView("Word");
return mv;
}
// 保存文件
@RequestMapping("/save")
public void saveFile(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
fs.saveToFile(docPath + fs.getFileName());
fs.close();
}
总结
pageOffice之所以能够夸浏览器是因为其在打开页面的时候同一采用的是IE的内核,所以起到了夸浏览器的作用,使用起来还是相对简便的