java调用PageOffice生成word
一、在开发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。下面看例子:
- 制作模板
打开word模板插入书签:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下图所示
- 编写代码
调用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");
复制代码
- 生成效果图
三、 ×××
https://download.csdn.net/download/zi_wu_xian/10399345
转载于:https://blog.51cto.com/11430719/2113925
java调用PageOffice生成word相关推荐
- JAVA调用PageOffice实现Word文档中加盖印章
在某些OA系统开发中,某些客户可能会希望通过系统来实现签订某些电子文件或合同,而非还是必须通过纸质文件来实现.而电子签章就是为实现这一功能而出现的,电子签章能保证签订合同.协议的有效性和真实性,而如何 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...
- Java使用poi-tl生成word文档
Java使用poi-tl生成word文档,可以对模板文件进行文本替换,图片.表格.超链接添加.图表处理等.大概的说明都在代码注释里,只有一个地方需要注意,就是图表的替换,占位符{{barChart}} ...
- Java使用freemarker生成word文档并转pdf文档
Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...
- Java 调用Poi 生成费用报销单Excel
整个代码有点多,并没有做优化.目前只是为了功能实现.可以直接复制,创建main方法运行 默认一张A4纸,可以存放2个报销单模板. 如果只想一张A4纸,存放一个报销单.可以从分割线以下代码删除掉.其对应 ...
- Java 用 Freemarker 生成 Word 时内容换行
一.原因 试过各种换行符 '\r' '\n' '\r\n' '(char)11' 全部都不行!!! 原因是:Java 用 Freemarker 生成 Word 时的换行符被自动解析忽略掉 二.解决方法 ...
- java使用freemarker生成word
一.前端生成base64编码 npm install echarts --save 到vue的main.js中加入: import echarts from 'echarts'Vue.prototyp ...
- Java freemarker 模板生成word动态表格
1.新建一个word文档 2.把调整完的word另存为xml格式: 3.使用文本编辑器打开 4.xml格式化 XML 在线格式化 | 菜鸟工具菜鸟工具-XML 在线格式化..https://c.run ...
- Java使用freemarker生成word文件
首先声明我的项目是一个web项目,生成的word文件直接通过response响应发送给前端.如果不是web项目的话可以像网上的其他教程一样将生成的word保存在本地. 要利用freemarker生成w ...
最新文章
- Java 9因模块化进程缓慢而欲推迟发布
- Makefile 实际用例分析(一) ------- 比较通用的一种架构
- 如何用模型分析中国经济?
- 去java文件 注释_去除java文件中注释部分
- 基于Xml 的IOC 容器-分配注册策略
- php copy 文件夹,php删除与复制文件夹及其文件夹下所有文件的实现代码
- java程序退出自动保存_你知道如何自动保存 Spring Boot 应用进程号吗
- oracle 表的移动,oracle 表移动表空间
- js、jQuery实现文字上下无缝轮播、滚动效果
- 什么是垃圾回收(转)
- xen服务器不能挂载iso文件,Citrix XenCenter安装VM:挂载ISO详解
- linux i2c驱动协议
- 单片机之矩阵键盘(花样编程)
- 水色物语:清新水彩手绘插画技法
- 核心关键词排名优化技巧
- 第三课:布尔逻辑与逻辑门
- java实现getch_Java中是否有C++中的getch()等效项? - java
- AutoSAR系列讲解 - 交流专区
- JavaScript(Dom对象的操作)
- 系统架构-基础篇-(高性能基础建设说明与选型条件)