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

在线打开文件的效果图:

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

  1. [原创]Java集成PageOffice在线打开编辑word文件 - Spring Boot

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  2. [原创]Java调用PageOffice给Word中的Table赋值

    Word中的table操作需要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.因此,要想使用table,则必须在w ...

  3. [原创]Java开发如何在线打开Word文件

    此方案使用了PageOffice产品实现在线打开Word文档: 1. 首先从PageOffice官网下载产品开发包,http://www.zhuozhengsoft.com/dowm/ ,下载Page ...

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

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  5. [原创]java调用PageOffice生成word

    一.在开发OA办公或与文档相关的Web系统中,难免会遇到动态生成word文档的需求,为了解决工作中遇到导出word文档的需求,前一段时间上网找了一些资料,在word导出这方面有很多工具可以使用,jac ...

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

    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...

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

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  8. php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

    php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($c ...

  9. 【Android Developers Training】 26. 在SQL数据库中保存数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. mysql 04_章基本查询

    当我们使用select查询语句向数据库发送一个查询请求,数据库会根据请求执行查询,并返回一个虚拟表,其数据来源于真实的数据表. 一.查询所有数据:所有的字段.所有的记录 格式:SELECT * FRO ...

  2. Java动态代理与CGLib

    Java帝国之动态代理 CGLib:从兄弟到父子-动态代理在民间是怎么玩的? 以上两篇文章引用自微信公众号: 码农翻身 Java动态代理 深度详解 以上文章引用博客园:陈树义

  3. thinkphp 比较标签

    比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下: <比较标签 name="变量" value="值& ...

  4. nginx的配置:目的是使用nginx反向代理后,应用程序获取用户真实ip

    一.了解nginx Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HT ...

  5. windows 映射samba Linux服务器,输入正确的账号密码却提示“ 指定的网络密码不正确

    重启Linux samba服务也没用,重启Linux和windows系统也没用,急!!! 最佳答案 linux中要添加对应的系统用户和samba用户useradd titiansmbpasswd -a ...

  6. ASP.NET的一些概念

    简述实体框架(EF): EF是一种ORM工具,ORM表示对象关联映射. 在RDMS中,对象称为表格和列对象,而在.net中(面向对象)称为类,对象以及属性. EF提供了三种方式来实现项目: l 数据库 ...

  7. Git log和reflog

    1.log  log命令可以显示所有提交过的版本信息.显示信息如下: Administrator@USER-20171026MG MINGW64 ~/Desktop/lyf (master) $ gi ...

  8. 炮兵阵地 /// 状压DP oj26314

    题目大意: 炮兵阵地 设置炮兵的位置 其上两位 下两位 左两位 右两位 不能同时设置炮兵 这题是 corn fields玉米地 的升级版 可以先看下这题的注释 更详细些 第一种方法是网上大多数题解的解 ...

  9. Traveling by Stagecoach /// 状压DP oj22914

    题目大意: 输入n,m,p,a,b n是车票数(1<=n<=8),m是城市数(2<=m<=30) p是路径数(可能为0),a是起点,b是终点 接下来一行有n个数 为每张车票的马 ...

  10. Resource Archiver HDU - 3247 AC自动机+BFS+状压

    题意: 给出n个资源串,m个病毒串,现在要如何连接资源串使得不含病毒串(可以重叠,样例就是重叠的). 题解: 这题的套路和之前的很不同了,之前的AC自动机+DP的题目一般都是通过teir图去转移, 这 ...