java:讀取並修改word中的內容並儲存。
阿新 • • 發佈:2019-01-03
1.讀取word內容
2.修改要修改的內容
3.儲存word
public Map readwriteWord(Map<String, String> map,String gcid,String deptid) { //查詢word模板 BindContractTemplate bindContractTemplate = new BindContractTemplate(); bindContractTemplate.setGCId(gcid); bindContractTemplate.setDeptId(deptid); bindContractTemplate = bindContractTemplateService.get(bindContractTemplate); //吧伺服器的模板下載到本機中 String photoUrl = bindContractTemplate.getContractTemplateUrl(); String fileNames = photoUrl.substring(photoUrl.lastIndexOf("/")); String filePath = "/var/xxx/webserver/xxx/contract/"; boolean flag = saveUrlAs(photoUrl, filePath +fileNames); // 讀取word模板 FileInputStream in = null; try { in = new FileInputStream(new File(filePath + fileNames)); //in = new FileInputStream(new File("F:\\1495206705005.doc")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } HWPFDocument hdt = null; try { hdt = new HWPFDocument(in); } catch (IOException e1) { e1.printStackTrace(); } Fields fields = hdt.getFields(); Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN) .iterator(); while (it.hasNext()) { System.out.println(it.next().getType()); } // 讀取word文字內容 Range range = hdt.getRange(); // 替換文字內容 for (Map.Entry<String, String> entry : map.entrySet()) { if (entry.getValue() == null) { entry.setValue(" "); } range.replaceText("${" + entry.getKey() + "}", entry.getValue()); //例如:range.replaceText("${辰辰}", entry.getValue());就是用map的value值代替word中的${辰辰} ,${} 作為識別符號,可以改成自己需要的字元, //用於辨別word中需要修改的內容的位置 } ByteArrayOutputStream ostream = new ByteArrayOutputStream(); String fileName = "" + System.currentTimeMillis(); fileName += ".doc"; FileOutputStream out = null; String path = "http://test.fq.pms.efanghang.com/"+fileName; String pathout = "/var/fangqian/webserver/qypms_boot_jar/contract/" + fileName; //String path = "f:\\"+fileName; try { out = new FileOutputStream("/var/fangqian/webserver/qypms_boot_jar/contract/" + fileName, true); e.printStackTrace(); } try { hdt.write(ostream); } catch (IOException e) { e.printStackTrace(); } // 輸出位元組流 try { out.write(ostream.toByteArray()); } catch (IOException e) { e.printStackTrace(); } try { out.close(); } catch (IOException e) { e.printStackTrace(); } try { ostream.close(); } catch (IOException e) { e.printStackTrace(); } Map mapout=new HashMap(); mapout.put("path",path); mapout.put("pathout",pathout); System.out.println("修改word完啦"); return mapout; }