[原创]Java调用PageOffice在线打开数据库中保存的Word文件

PageOffice产品和数据库是两个独立的概念,严格来说两者之间没有任何本质关系。PageOffice不依赖数据库而存在,但是数据库和PageOffice可以结合使用来完成某些复杂的业务逻辑。例如:PageOffice可以打开数据库中的二进制流文件,也可以将Word或者Excel整个文档或者文档中的一部分数据保存到数据库中,这里的数据库可以是任意数据库,如:Sqlite,Access,SQL Server,Oracle,MySQL,DB2,Sybase等。下面我们就此问题展开详细论述。

1)打开文档的Stream.jsp页面:

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
    poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz");
    ……
    poCtrl1.setSaveFilePage("SaveFile.jsp?id=1");
    poCtrl1.webOpen("Openstream.jsp?id=1", OpenModeType.docNormalEdit, "张三");

2)下载文档的Openstream.jsp页面:

    String id = request.getParameter("id");
    Class.forName("org.sqlite.JDBC");
    String strUrl = "jdbc:sqlite:" + this.getServletContext().getRealPath("demodata/DataBase.db");
    Connection conn = DriverManager.getConnection(strUrl);
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select * from stream where id = "+ id);

    if (rs.next()) {
        //******读取磁盘文件,输出文件流 开始****
        byte[] imageBytes = rs.getBytes("Word");
        int fileSize = imageBytes.length;
        response.reset();
        response.setContentType("application/msword");
        response.setHeader("Content-Disposition","attachment; filename=down.doc");
        response.setContentLength(fileSize);
        OutputStream outputStream = response.getOutputStream();
        outputStream.write(imageBytes);
        outputStream.flush();
        outputStream.close();
        outputStream = null;
        //******读取磁盘文件,输出文件流 结束*************
    }
    rs.close();
    conn.close();

3) 保存文件到数据库中SaveFile.jsp的代码:

    FileSaver fs = new FileSaver(request, response);
    String err = "";
    if (request.getParameter("id") != null
            && request.getParameter("id").trim().length() > 0) {
        String id = request.getParameter("id").trim();
        Class.forName("org.sqlite.JDBC");
            String strUrl = "jdbc:sqlite:"
                + this.getServletContext().getRealPath("demodata/") + "\\DataBase.db";
        Connection conn = DriverManager.getConnection(strUrl);
        String sql = "UPDATE  Stream SET Word=?  where ID=" + id;
        PreparedStatement pstmt = null;
        pstmt = conn.prepareStatement(sql);
                 pstmt.setBytes(1,fs.getFileBytes());
        //pstmt.setBinaryStream(1, fs.getFileStream(),fs.getFileSize());
        pstmt.executeUpdate();
        pstmt.close();
        conn.close();

        fs.setCustomSaveResult("ok");
    } else {
        err = "<script>alert(‘未获得文件的ID,保存失败‘);</script>";
    }
    fs.close();

注:该示例的完整代码和详细演示请参考PageOffice产品开发包中的Samples或者Samples4示例:二、2、打开保存数据库中的文件(以Word为例)
PageOffice下载地址,访问http://www.zhuozhengsoft.com/,点击首页的立即下载。

在线打开文件的效果图:

原文地址:https://www.cnblogs.com/pageoffice/p/11776074.html

时间: 2024-08-13 02:50:43

[原创]Java调用PageOffice在线打开数据库中保存的Word文件的相关文章

[转载]Java集成PageOffice在线打开编辑word文件 - Spring Boot

开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven project项目:demo. 2. 修改pom.xml配置,把项目配置为Spring Boot项目: 3. 配置Thymeleaf:添加Thymeleaf依赖,并在application.properties文件中添加Thymeleaf的配置: 4. 新建DemoController,添加showW

java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫

Java调用cmd命令 打开一个站点

使用Java程序打开一个站点 近期做了个东西使用SWT技术在一个client程序 须要升级时在提示升级 点击窗口上的一个连接 打开下载网页 花费了我非常长时间 用到了把它记录下来  怕是忘记,须要时能够直接来用到.         try { //不是在Java程序中运行而是在操作系统中运行             Runtime.getRuntime().exec("cmd /c start http://blog.csdn.net/blogluoqi/"); //Runtime.g

Java 调用Mysql dump 备份数据库

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); try { String name = sdf.format(new Date()); String filePath = System.getProperty("user.dir") + "//" + name + ".sql"; // 系统执行器 Runtime rt = Runtime.getRu

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

Java代码实现向Oracle数据库中导入已备份的数据库文件

今天将很早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的: import java.io.IOException; /** * Java代码实现向Oracle数据库中导入已备份的数据库文件 * * @author:Gaohuanjie */ public class OracleImportDatabase { /** * 向Oracle数据库中导入已备份的数据库文件 * * @author:Gaohuanjie * @param userName 进入数据库所

采用struts2+hibernate实现保存文件到Oracle数据库&amp;&amp;并附下载代码【导入即可用】;数据库中保存blob类型的二进制文件

原文:采用struts2+hibernate实现保存文件到Oracle数据库&&并附下载代码[导入即可用]:数据库中保存blob类型的二进制文件 源代码下载地址:http://www.zuidaima.com/share/1550463402478592.htm

java io流 运行错误时,保存异常到文件里面

java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 import java.io.*; import java.util.*; public class Index{ public static void main(String[] args) throws Exception{ try{ //创建文件

微信中接收的word文件如何保存到电脑

因为使用微信碰到,别人发的文件想下到电脑里问题,研究了下: 1.使用微信文件传输助手 参考:http://jingyan.baidu.com/article/ab69b270cb757a2ca6189f67.html 登录微信网页版的操作啦,我们点击"开始扫描",然后登录wx.qq.com,然后利用微信软件扫描网页上面的二维码就可以开始下一步操作啦. 网页上面登陆完毕微信之后,然后我们会在网页上面看到一个文件传输助手,我们将需要进行传输的文件选择完毕之后,点击发送就可以啦. 2.使用手