Java向word文档中填充数据

前言:

对于中大型OA系统来说,在线打开word文档已经是一个常用需求。既然有在线操作word文档的需求,那就不可避免要有打开文档时动态填充数据的需求。这篇文章就让小编来介绍一个中间件技术-pageoffice。

pageoffice对于word的功能做到了80%以上的封装,而且api比较简单容易上手。

推荐像小编一样 只懂Java不懂VBA接口 不懂office程序调用的同学花10分钟学习一下。

先看效果

这里的“张三”和“销售部”就是由Java后台填充到word文档中的数据。

如何集成(复制粘贴只需5步)

   1.官网下载pageoffice(http://www.zhuozhengsoft.com/dowm/).

  2.去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的web.xml中。

  3.在父页面aaa.jsp(需要打开文档的页面)放一个a标签或者button

写a标签之前先引入pageoffice需要的js文件

<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>

然后添加a标签

<a href="javascript:POBrowser.openWindowModeless('Word.jsp', 'width=1050px;height=900px;');">打开文档并填充数据</a>

  4.在父页面同级目录下创建一个Word.jsp文件

<%@ page language="java"
	import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*"
pageEncoding="utf-8"%>
<%
	PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
	poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
	WordDocument doc = new WordDocument();
	//打开数据区域
	DataRegion dataRegion1 = doc.openDataRegion("PO_aaa");
	//给数据区域赋值
	dataRegion1.setValue("张三");

	poCtrl1.setWriter(doc);

	//打开Word文件
	poCtrl1.webOpen("test.doc", OpenModeType.docNormalEdit, "张三");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<title>简单的给Word文档中的数据区域赋值</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">

	</head>

	<body>
		<div style="width: auto; height: 700px;">
			<%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%>
		</div>
	</body>
</html>

  5.去桌面新建一个test.doc文件(如果新建的是test.docx文件,需要将第四步中的poCtrl1.webOpen代码的第一个参数改为"test.docx").打开文档随便编辑点内容,然后选中想要通过程序替换的文本,点击插入-书签,输入书签名为"PO_aaa"(与程序代码中的doc.openDataRegion("PO_aaa")相对应),点击添加,最后保存文件.别忘记把保存好的文件放在父页面同级目录

然后启动项目直接访问aaa.jsp点击链接.此时会提示安装插件,点击安装成功后提示注册,填写相关信息,填写注册码CA1XB-MF7Y-12ST-PSBP2就可以打开文档,并且同时也会看到刚刚后台的"张三"也被填充到word文档中.

  如果有更多的在线操作文档的需求,这里也有视频教程    
  http://www.zhuozhengsoft.com/Technical/

 

如有侵权,请联系小编

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java ,可以使用 Apache POI 库来操作 Word 文档。要实现动态填充数据,可以使用 Word 模板和占位符。具体步骤如下: 1. 创建 Word 模板,并在需要填充数据的位置添加占位符,例如 ${name}。 2. 使用 Apache POI 打开模板文件,并读取文件的内容。 3. 将读取到的内容转换为一个 XWPFDocument 对象。 4. 使用 XWPFDocument 对象的方法,查找并替换所有的占位符,例如使用 replaceAll 方法将 ${name} 替换为具体的数据。 5. 保存修改后的 Word 文档。 下面是一个示例代码,演示如何实现动态填充数据: ``` import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; public class WordFiller { public static void main(String[] args) throws IOException { // 读取 Word 模板 FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument doc = new XWPFDocument(fis); // 填充数据 Map<String, String> data = new HashMap<>(); data.put("name", "张三"); data.put("age", "20"); for (XWPFParagraph p : doc.getParagraphs()) { String text = p.getText(); for (String key : data.keySet()) { if (text.contains("${" + key + "}")) { text = text.replace("${" + key + "}", data.get(key)); } } p.setText(text); } // 保存 Word 文档 FileOutputStream fos = new FileOutputStream("output.docx"); doc.write(fos); fos.close(); doc.close(); } } ``` 在代码,我们首先读取了一个名为 template.docx 的 Word 模板文件。然后,我们定义了一个存储数据的 Map 对象,并将需要填充数据存储在其。接下来,我们遍历文档的所有段落,查找并替换所有的占位符。最后,我们将修改后的文档保存到一个名为 output.docx 的文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值