一、在开发OA办公或与文档相关的Web系统中,难免会遇到动态生成word文档的需求,为了解决工作中遇到导出word文档的需求,前一段时间上网找了一些资料,在word导出这方面有很多工具可以使用,jacob、poi、java2word、itext。jacob要求服务器必须是windows操作系统,服务器上还必须安装office软件,果断放弃!poi需要针对doc和docx两种格式写不同的代码,增加了程序的复杂度。java2doc 是对 jacob 的封装,同样放弃!最后选定了用itext来导出word,网上一些资料说itext导出word功能太简单,通过试用之后,封装工具类,使用起来确实挺方便,但是导出的word文档在细节方面很难达到要求,比如:字体、行距、字体间距、首行缩进等。

二、由于itext导出的word有各种各样的小问题,只能另找其他的解决方案,经过一个朋友推荐,可用PageOffice组件来导出word,其效果能与用户需求的word文档达到完美的一致,而且编程接口简单,调用很方便。总的来说就是制作模板(用PO_开头的书签作为数据占位符),然后编程调用PageOffice接口用真实数据替换模板中的占位符,最后生成word。下面看例子:

  1. 制作模板

  打开word模板插入书签:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下图所示

  

  1. 编写代码

  调用PageOffice接口,给word模板填充数据生成word文档:

  

复制代码
1 // 声明变量存储从数据库中读取的数据
2 String docName = "", docDept = "", docCause = "", docNum = "", docDate = "";
3 // 数据库数据读取操作(不同的数据库用不同的代码)
4 ResultSet rs = stmt.executeQuery("select * from leaveRecord where ID = " + id);
5 if (rs.next()) {
6 docName = rs.getString("Name");
7 docDept = rs.getString("Dept");
8 docCause = rs.getString("Cause");
9 docNum = rs.getString("Num");
10 docDate = rs.getString("SubmitTime");
11 }
12 rs.close();
13 //创建PageOffice的WordDocument对象,操作Word文件
14 WordDocument doc = new WordDocument();
15 doc.openDataRegion("PO_name").setValue(docName);
16 doc.openDataRegion("PO_dept").setValue(docDept);
17 doc.openDataRegion("PO_cause").setValue(docCause);
18 doc.openDataRegion("PO_num").setValue(docNum);
19 doc.openDataRegion("PO_date").setValue(docDate);
20 //创建PageOfficeCtrl对象打开文件
21 PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
22 poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
23 //获取数据对象
24 poCtrl1.setWriter(doc);
25 // 打开文档
26 poCtrl1.webOpen("doc/template.doc", OpenModeType.docReadOnly, "Tom");
复制代码

  1. 生成效果图

  

  

三、 ×××

  https://download.csdn.net/download/zi_wu_xian/10399345

转载于:https://blog.51cto.com/11430719/2113925

java调用PageOffice生成word相关推荐

  1. JAVA调用PageOffice实现Word文档中加盖印章

    在某些OA系统开发中,某些客户可能会希望通过系统来实现签订某些电子文件或合同,而非还是必须通过纸质文件来实现.而电子签章就是为实现这一功能而出现的,电子签章能保证签订合同.协议的有效性和真实性,而如何 ...

  2. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  3. Java使用poi-tl生成word文档

    Java使用poi-tl生成word文档,可以对模板文件进行文本替换,图片.表格.超链接添加.图表处理等.大概的说明都在代码注释里,只有一个地方需要注意,就是图表的替换,占位符{{barChart}} ...

  4. Java使用freemarker生成word文档并转pdf文档

    Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...

  5. Java 调用Poi 生成费用报销单Excel

    整个代码有点多,并没有做优化.目前只是为了功能实现.可以直接复制,创建main方法运行 默认一张A4纸,可以存放2个报销单模板. 如果只想一张A4纸,存放一个报销单.可以从分割线以下代码删除掉.其对应 ...

  6. Java 用 Freemarker 生成 Word 时内容换行

    一.原因 试过各种换行符 '\r' '\n' '\r\n' '(char)11' 全部都不行!!! 原因是:Java 用 Freemarker 生成 Word 时的换行符被自动解析忽略掉 二.解决方法 ...

  7. java使用freemarker生成word

    一.前端生成base64编码 npm install echarts --save 到vue的main.js中加入: import echarts from 'echarts'Vue.prototyp ...

  8. Java freemarker 模板生成word动态表格

    1.新建一个word文档 2.把调整完的word另存为xml格式: 3.使用文本编辑器打开 4.xml格式化 XML 在线格式化 | 菜鸟工具菜鸟工具-XML 在线格式化..https://c.run ...

  9. Java使用freemarker生成word文件

    首先声明我的项目是一个web项目,生成的word文件直接通过response响应发送给前端.如果不是web项目的话可以像网上的其他教程一样将生成的word保存在本地. 要利用freemarker生成w ...

最新文章

  1. Java 9因模块化进程缓慢而欲推迟发布
  2. Makefile 实际用例分析(一) ------- 比较通用的一种架构
  3. 如何用模型分析中国经济?
  4. 去java文件 注释_去除java文件中注释部分
  5. 基于Xml 的IOC 容器-分配注册策略
  6. php copy 文件夹,php删除与复制文件夹及其文件夹下所有文件的实现代码
  7. java程序退出自动保存_你知道如何自动保存 Spring Boot 应用进程号吗
  8. oracle 表的移动,oracle 表移动表空间
  9. js、jQuery实现文字上下无缝轮播、滚动效果
  10. 什么是垃圾回收(转)
  11. xen服务器不能挂载iso文件,Citrix XenCenter安装VM:挂载ISO详解
  12. linux i2c驱动协议
  13. 单片机之矩阵键盘(花样编程)
  14. 水色物语:清新水彩手绘插画技法
  15. 核心关键词排名优化技巧
  16. 第三课:布尔逻辑与逻辑门
  17. java实现getch_Java中是否有C++中的getch()等效项? - java
  18. AutoSAR系列讲解 - 交流专区
  19. JavaScript(Dom对象的操作)
  20. 系统架构-基础篇-(高性能基础建设说明与选型条件)

热门文章

  1. AI一分钟|美国第一家!Waymo商业自动驾驶打车服务正式获批
  2. 刚刚!微信再次官宣2000w+个限量版虎年红包封面,超好看!速度撸!
  3. 面试官问:线程池是如何重复利用空闲的线程来执行任务的?
  4. 为什么阿里巴巴要求日期格式化时必须有使用y表示年,而不能用Y?
  5. RESTful 架构基础
  6. 三本+双非拿到小米offer,我的经验总结
  7. 视频也能P!谷歌CVPR 2021最新视频P图模型omnimatte
  8. 如何用PyTorch进行语义分割?
  9. 2 分 31 秒,腾讯云创造 128 卡训练 ImageNet 新记录
  10. LSTM 为何如此有效?这五个秘密是你要知道的