ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java 替换word中占位符\标签 ${}内容

2021-06-28 18:34:34  阅读:208  来源: 互联网

标签:map java doc 占位 word org apache import


1、先看效果图

原始文件:

 

 

 结果:

 

 代码:

package com.test.wordTest;
 
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Section;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
/**
 * @author 
 * @Description
 * @date 2021/6/28 17:00
 */
public class AsposeTest {
    public static void main(String[] args) {
        String filePath = "C:\\劳动合同(标准版).docx";
        POIFSFileSystem fs = null;
        try {
            fs = new POIFSFileSystem(new FileInputStream(filePath));
            HWPFDocument doc = new HWPFDocument(fs);
            //将需要替换的内容翻到map中,如果word中使用的不是${}形式,map的可以也需要修改
            Map<String,String> map = new HashMap<>();
            map.put("${甲方盖章}","急急急");
            map.put("${乙方签名}","烦烦烦");
            map.put("${工作岗位}","java开发");
            map.put("${工作地点}","北京朝阳");
            replaceText(doc,map);
 
            saveWord(filePath, doc);
        }
        catch(FileNotFoundException e){
            e.printStackTrace();
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }
 
    private static HWPFDocument replaceText(HWPFDocument doc, Map<String,String> map){
        Range r1 = doc.getRange();
 
        for (int i = 0; i < r1.numSections(); ++i ) {
            Section s = r1.getSection(i);
            for (int x = 0; x < s.numParagraphs(); x++) {
                Paragraph p = s.getParagraph(x);
                for (int z = 0; z < p.numCharacterRuns(); z++) {
                    CharacterRun run = p.getCharacterRun(z);
                    String text = run.text();
                    map.forEach((key,value) -> {
                        if(text.contains(key)) {
                            run.replaceText(key, value);
                        }
                    });
                }
            }
        }
        return doc;
    }
 
    private static void saveWord(String filePath, HWPFDocument doc) throws FileNotFoundException, IOException {
        FileOutputStream out = null;
        try{
            out = new FileOutputStream(filePath);
            doc.write(out);
        }
        finally{
            out.close();
        }
    }
 
}
 
 

 

标签:map,java,doc,占位,word,org,apache,import
来源: https://www.cnblogs.com/romantic-321/p/14945754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有