java poi修改word2007_java poi 替换word2007中的指定文本
开头贴出参考文章地址:
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中的指定文本相关推荐
- POI替换word中的指定文字(包含表格,表格中有回车)
网上可以找到很多POI替换Word中指定文字的代码,然而基本上都没有对文档中的表格中包含的段落(回车)进行处理.自己写了,代码记录如下: /** * *@templetStream 文档的输入流 *@ ...
- PDF文件怎么修改,如何替换PDF中的一页
在很多的时候,我们都会使用到PDF文件,对于PDF文件,不熟悉的小伙伴,还是会头疼的,而熟悉的小伙伴会知道,修改编辑PDF文件,是需要使用到PDF编辑器的,在编辑文件的时候,怎样替换文件中的页面呢,不 ...
- 使用Python批量替换指定目录所有文件中的指定文本
使用Python批量替换指定目录所有文件中的指定文本 # -*- coding: utf-8 -*- import os from = "aaa" #替换为什么内容,可以是多行 t ...
- 怎么在Excel中查找指定文本并标记颜色
今天跟大家分享一下怎么在Excel中查找指定文本并标记颜色 1.如下图,我们想要在表格中快速查找标记"李虹霖" 2.首选我们全选表格区域 3.然后点击下图选项(Excel工具箱,百 ...
- java修改文件一行_java替换文件中某一行文本的内容
个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下package com.wenhaofan.common.kit; import ...
- java关于替换文本输出的讲解_java替换文件中某一行文本的内容
个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下 package com.wenhaofan.common.kit; impor ...
- java给文件添加水印_Java在PDF中添加水印(文本/图片水印)
水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...
- java 数组元素查找_Java在数组中查找指定元素的方法
Java在数组中查找指定元素我们是用什么方法来实现呢,是使用遍历查找还是使用其它的方法来查找呢,下面给各位整理了一些查找数组元素的例子. 以下实例演示了如何使用 contains () 方法来查找数组 ...
- java ee 修改_java ee 在数据库中执行增删改查
1.先建一个主页面里面包含着添加方法 学生信息 {//1.连接数据库// 1)加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver" ...
最新文章
- P4281 [AHOI2008]紧急集合 / 聚会
- linux c 文件指针 句柄(FILE*) 文件描述符(fd) 文件路径(filepath) 互相转换
- 索尼游戏手柄SP2的开发体会
- 神奇的事情--长见识了
- 传腾讯人事大地震 马化腾将重整公司架构
- java获取tomcat启动时间不对_部署在Tomcat 服务器中的web应用读取时间与系统时间不一致问题...
- Fatal error in launcher: Unable to create process using ''之解决办法
- swift的设计原则_iPhone12 的UI设计规范如何做?
- 电脑开机进不了桌面拒绝访问怎么办
- Java中的Class类
- 数学建模之模糊综合评价模型
- asp.net图书馆管理系统
- 第八章 DirectX 3D模型加载和骨骼动画(上)
- AutoUpdater 实现一个简易的自动升级工具
- CSDN很火的汤小洋老师全部课程总共有哪些(问号问号问号)
- Python自然语言处理——nltk库入门之文本分词(英文)
- Lambda将搬砖变成艺术
- 求单链表的交集和并集
- 基于Android的医院预约挂号系统
- UVA 10387 Billiard
热门文章
- 牛!这本 Python 3.6 的书火爆了 IT 圈!
- 为什么我不使用 Web 组件?
- 刘强东深夜写信诉苦;华为不排斥卖给苹果 5G 芯片;Facebook 再宕机 | 极客头条...
- 微信封杀百度红包;刘强东新开公司;库克“iPhone 表现不好”| 极客头条
- 程序员如何应对双十一购物的大流量冲击?
- 苹果承认使用谷歌云存储 iCloud 数据,但确保无隐私问题
- 比特币价格会达到10万美元?有人用蒙特卡罗方法预测了一下
- 网络编程之 哈希表原理讲解 来自老司机的源码
- 火爆全网MySQL路线笔记!linuxmysql允许远程连接
- 数字字符串转化成 IP 地址