[原创]Java动态填充word文档并上传到服务器
一、 需求背景
在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是局限于windows平台,往往许多JAVA程序运行于其他操作系统,在此不讨论该方案。二是POI。 但是它的excel处理还凑合, word模块还局限于读取word的文本内容,写word文件的功能就更弱;还有一个要命的地方,处理doc格式和处理docx格式的类几乎完全不同,要分开针对不同的格式写不同的代码,这就意味着用户上传的docx格式文件如果使用了doc的扩展名,程序马上崩溃。而且个人认为poi结构混乱,编码比较复杂,开发过程非常消耗时间和精力。PageOffice提供了FileMakerCtrl组件,FileMakerCtrl是在客户端生成文档并上传到服务器,但是不会在Web网页里显示word文档,因此采用FileMakerCtrl生成word文件有两个优点:1. 在客户端生成word文档,不会对服务器造成任何压力;2. 生成的文档属于标准的word文档格式。
二、 核心代码
1.制作模板,打开word模板文件,在文件中插入书签:PO_company、PO_year、PO_number,如下图所示:

2. 动态填充word文档并上传到服务器
FileMakerCtrl fmCtrl = new FileMakerCtrl(request);
//设置PageOffice的服务页面
fmCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
WordDocument doc = new WordDocument();
//给数据区域赋值,即把数据填充到模板中相应的位置
doc.openDataRegion("PO_company").setValue("北京某某软件有限公司 ");
doc.openDataRegion("PO_year").setValue("2018");
doc.openDataRegion("PO_number").setValue("008");
fmCtrl.setWriter(doc);
//设置用来接收生成的文档的action方法或RequestMapping方法
fmCtrl.setSaveFilePage("/SaveFile");
fmCtrl.fillDocument("doc/template.doc", DocumentOpenType.Word);
3. 编写SaveFilePage指向的action或RequestMapping方法的代码,接收客户端上传的文件流
FileSaver fs = new FileSaver(request, response);
String fileName = "myfile.doc" ;
fs.saveToFile(request.getSession().getServletContext().getRealPath("/") +"/"+ fileName);
fs.close();
4. 生成的word文件效果。

三、 相关下载
访问下面的地址下载PageOffice for Java 开发包,部署Samples4示例之后参考示例:二、13、FileMaker转换单个文档(以Word为例)
http://www.zhuozhengsoft.com/dowm/
[原创]Java动态填充word文档并上传到服务器的更多相关文章
- [转载]Java动态填充word文档并上传到服务器
一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是 ...
- [原创]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- [转载]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- JSP实现word文档的上传,在线预览,下载
前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了.希望得到各位大神的指教.下面我就具体谈谈自己的实现过程,总结一 ...
- [原创]Java在线编辑word文档调用PageOffice实现并发控制
1.功能介绍 PageOffice的并发控制功能用来解决多个用户在线编辑同一篇文档可能造成的互相覆盖修改结果的技术难题. B/S架构下用户访问都是并发的,也就是说经常会出现同时N个用户对一个服务器页面 ...
- C#动态生成Word文档并填充数据
C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...
- java 在线拆分 word文档采用什么技术比较好?
在Java项目开发中,偶尔会遇到通过程序动态拆分word文档的需求,由于Java本身不能操作Word文档,在网上也都是讨论如何动态合并word,所以这个需求实现起来相当困难,下面就将近期对于Word文 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
随机推荐
- k8s 常用命令
[root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 1h v1.8.1 node1 ...
- PopuWindow和软件盘共存时的设置
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/32316069 一.键盘不消失,popuw ...
- easyui-combobox 中多选的默认值设置、获取多选值及JS包含字符串、删除字符串
1.项目中使用到combobox的多选值及相关操作,不多说,直接上代码: <input id="education" name="education" c ...
- MySQL数据库(4)_MySQL数据库外键约束、表查询
一.外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...
- Python进阶(1)_Socket网络编程(基于tcp的socket)
网络协议参考:http://www.cnblogs.com/hedeyong/p/6889774.html 一.TCP/IP五层模型 学习socket一定要先学习互联网协议: 1.首先:本节课程的目标 ...
- springboot-controller的使用
获取url中的数据: @RestController public class HelloController { @RequestMapping(value="/say/{id}" ...
- Django-Ajax基础知识
Ajax准备知识:json 1.什么是json JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c ...
- 快乐学习 Ionic Framework+PhoneGap 手册1-2{介绍Header,Content,Footer的使用}
*先运行第一个简单的APP,介绍Header,Content,Footer的使用 {2.1}运行一个简单的APP,效果如下 {2.2}Header代码 <ion-header-bar class ...
- complexHeatmap包画分类热图
用途:一般我们画热图是以连续变量作为填充因子,complexHeatmap的oncopoint函数可以以类别变量作为填充因子作热图. 用法:oncoPrint(mat, get_type = func ...
- mini2440移植uboot 2014.04(七)
上一篇博文:<mini2440移植uboot 2014.04(六)> 代码已经上传到github上: https://github.com/qiaoyuguo/u-boot-2014.04 ...