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

网友投稿 433 2022-11-03


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 map =http:// 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.gethttp://Name()));

if("word/document.xml".equals(entry.getName())){

String xml = new BufferedReader(new InputStreamReader(zin)).lines().collect(Collectors.joining(System.lineSeparator()));

xml = process.process(xhttp://ml);

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);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IP
下一篇:汇率换算查询API(汇率换算查询器)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~