文章目录

  • 前言
  • 一、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的内核,所以起到了夸浏览器的作用,使用起来还是相对简便的