当前位置:Gxlcms > 数据库问题 > [原创]Java调用PageOffice在线打开数据库中保存的Word文件

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

时间:2021-07-01 10:21:17 帮助过:73人阅读

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/,点击首页的立即下载。

在线打开文件的效果图:

技术图片

 

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

标签:exce   filename   png   gets   dstat   err   业务逻辑   exec   tac   

人气教程排行