java 替换docx文件中的字符串方法实现

替换docx文件里面的 ${} 字符串

public class Main {  public static void main(String[] args) throws Exception {    String template = "C:\\Users\\lzh\\Desktop\\模板.docx";    String outSrc = "C:\\Users\\lzh\\Desktop\\简历.docx";    var is = new FileInputStream(template);    var os = new FileOutputStream(outSrc);    editDocx(os, is, xml -> {      Map<String,String> map = new HashMap<>();      map.put("${name}", "李**");      map.put("${sex}", "男");      map.put("${age}", "21");      Pattern p = Pattern.compile("(\\$\\{)([\\w]+)(\\})");      Matcher m = p.matcher(xml);      StringBuffer sb = new StringBuffer();      while (m.find()) {        String group = m.group();        m.appendReplacement(sb, map.get(group));      }      m.appendTail(sb);      xml = sb.toString();      return xml;    });  }  public static void editDocx(OutputStream bos,InputStream is, Process process){    ZipInputStream zin = new ZipInputStream(is);    ZipOutputStream zos = new ZipOutputStream(bos);    try {      ZipEntry entry;      while((entry = zin.getNextEntry()) != null) {        //把输入流的文件传到输出流中 如果是word/document.xml由我们输入        zos.putNextEntry(new ZipEntry(entry.getName()));        if("word/document.xml".equals(entry.getName())){          String xml = new BufferedReader(new InputStreamReader(zin)).lines().collect(Collectors.joining(System.lineSeparator()));          xml = process.process(xml);          ByteArrayInputStream byteIn = new ByteArrayInputStream(xml.getBytes());          int c;          while ((c = byteIn.read()) != -1) {            zos.write(c);          }          byteIn.close();        }else {          int c;          while ((c = zin.read()) != -1) {            zos.write(c);          }        }      }    } catch (IOException e) {      e.printStackTrace();    } finally {      try {        zos.close();        zin.closeEntry();        zin.close();      } catch (IOException e) {        e.printStackTrace();      }    }  }}interface Process {  String process(String xml);}

到此这篇关于java 替换docx文件中的字符串方法实现的文章就介绍到这了,更多相关java 替换docx字符串内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

接受我们不能改变的一切,改变我们能改变的一切。

java 替换docx文件中的字符串方法实现

相关文章:

你感兴趣的文章:

标签云: