开头贴出参考文章地址:

http://blog.sina.com.cn/s/blog_885585cb0101gnz7.html

http://www.cnblogs.com/dreammyle/p/5159267.html

效果图:原docx文件

效果图:替换后的docx文件

maven依赖:

org.apache.poi

poi

3.16

org.apache.poi

poi-scratchpad

3.16

org.apache.poi

poi-ooxml

3.16

java代码:

package com.smh.test;

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

import java.util.*;

import java.util.Map.Entry;

public class WordUtil {

public static void main(String[] args) throws IOException {

String srcPath = "D:\\a.docx";

String destPath = "D:\\a-" + System.currentTimeMillis() + ".docx";

InputStream in = new FileInputStream(srcPath);

FileOutputStream out = new FileOutputStream(destPath);

Map map = new HashMap<>();

map.put("${AGE}", "10777");

map.put("${NAME}", "99999");

replaceText(in, out, map);

in.close();

out.close();

}

public static void replaceText(InputStream inputStream, OutputStream outputStream, Map map) {

try {

XWPFDocument document;//= new XWPFDocument(POIXMLDocument.openPackage(srcPath));

document = new XWPFDocument(inputStream);

//1. 替换段落中的指定文字

Iterator itPara = document.getParagraphsIterator();

String text;

Set set;

XWPFParagraph paragraph;

List run;

String key;

while (itPara.hasNext()) {

paragraph = itPara.next();

set = map.keySet();

Iterator iterator = set.iterator();

while (iterator.hasNext()) {

key = iterator.next();

run = paragraph.getRuns();

for (int i = 0, runSie = run.size(); i < runSie; i++) {

text = run.get(i).getText(run.get(i).getTextPosition());

if (text != null && text.equals(key)) {

run.get(i).setText(map.get(key), 0);

}

}

}

}

//2. 替换表格中的指定文字

Iterator itTable = document.getTablesIterator();

XWPFTable table;

int rowsCount;

while (itTable.hasNext()) {

table = itTable.next();

rowsCount = table.getNumberOfRows();

for (int i = 0; i < rowsCount; i++) {

XWPFTableRow row = table.getRow(i);

List cells = row.getTableCells();

for (XWPFTableCell cell : cells) {

for (Entry e : map.entrySet()) {

if (cell.getText().equals(e.getKey())) {

cell.removeParagraph(0);

cell.setText(e.getValue());

}

}

}

}

}

//3.输出流

document.write(outputStream);

} catch (Exception e) {

e.printStackTrace();

}

}

}

java poi修改word2007_java poi 替换word2007中的指定文本相关推荐

  1. POI替换word中的指定文字(包含表格,表格中有回车)

    网上可以找到很多POI替换Word中指定文字的代码,然而基本上都没有对文档中的表格中包含的段落(回车)进行处理.自己写了,代码记录如下: /** * *@templetStream 文档的输入流 *@ ...

  2. PDF文件怎么修改,如何替换PDF中的一页

    在很多的时候,我们都会使用到PDF文件,对于PDF文件,不熟悉的小伙伴,还是会头疼的,而熟悉的小伙伴会知道,修改编辑PDF文件,是需要使用到PDF编辑器的,在编辑文件的时候,怎样替换文件中的页面呢,不 ...

  3. 使用Python批量替换指定目录所有文件中的指定文本

    使用Python批量替换指定目录所有文件中的指定文本 # -*- coding: utf-8 -*- import os from = "aaa" #替换为什么内容,可以是多行 t ...

  4. 怎么在Excel中查找指定文本并标记颜色

    今天跟大家分享一下怎么在Excel中查找指定文本并标记颜色 1.如下图,我们想要在表格中快速查找标记"李虹霖" 2.首选我们全选表格区域 3.然后点击下图选项(Excel工具箱,百 ...

  5. java修改文件一行_java替换文件中某一行文本的内容

    个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下package com.wenhaofan.common.kit; import ...

  6. java关于替换文本输出的讲解_java替换文件中某一行文本的内容

    个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下 package com.wenhaofan.common.kit; impor ...

  7. java给文件添加水印_Java在PDF中添加水印(文本/图片水印)

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  8. java 数组元素查找_Java在数组中查找指定元素的方法

    Java在数组中查找指定元素我们是用什么方法来实现呢,是使用遍历查找还是使用其它的方法来查找呢,下面给各位整理了一些查找数组元素的例子. 以下实例演示了如何使用 contains () 方法来查找数组 ...

  9. java ee 修改_java ee 在数据库中执行增删改查

    1.先建一个主页面里面包含着添加方法 学生信息 {//1.连接数据库// 1)加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver" ...

最新文章

  1. P4281 [AHOI2008]紧急集合 / 聚会
  2. linux c 文件指针 句柄(FILE*) 文件描述符(fd) 文件路径(filepath) 互相转换
  3. 索尼游戏手柄SP2的开发体会
  4. 神奇的事情--长见识了
  5. 传腾讯人事大地震 马化腾将重整公司架构
  6. java获取tomcat启动时间不对_部署在Tomcat 服务器中的web应用读取时间与系统时间不一致问题...
  7. Fatal error in launcher: Unable to create process using ''之解决办法
  8. swift的设计原则_iPhone12 的UI设计规范如何做?
  9. 电脑开机进不了桌面拒绝访问怎么办
  10. Java中的Class类
  11. 数学建模之模糊综合评价模型
  12. asp.net图书馆管理系统
  13. 第八章 DirectX 3D模型加载和骨骼动画(上)
  14. AutoUpdater 实现一个简易的自动升级工具
  15. CSDN很火的汤小洋老师全部课程总共有哪些(问号问号问号)
  16. Python自然语言处理——nltk库入门之文本分词(英文)
  17. Lambda将搬砖变成艺术
  18. 求单链表的交集和并集
  19. 基于Android的医院预约挂号系统
  20. UVA 10387 Billiard

热门文章

  1. 牛!这本 Python 3.6 的书火爆了 IT 圈!
  2. 为什么我不使用 Web 组件?
  3. 刘强东深夜写信诉苦;华为不排斥卖给苹果 5G 芯片;Facebook 再宕机 | 极客头条...
  4. 微信封杀百度红包;刘强东新开公司;库克“iPhone 表现不好”| 极客头条
  5. 程序员如何应对双十一购物的大流量冲击?
  6. 苹果承认使用谷歌云存储 iCloud 数据,但确保无隐私问题
  7. 比特币价格会达到10万美元?有人用蒙特卡罗方法预测了一下
  8. 网络编程之 哈希表原理讲解 来自老司机的源码
  9. 火爆全网MySQL路线笔记!linuxmysql允许远程连接
  10. 数字字符串转化成 IP 地址