Java學習之匯出word文件
阿新 • • 發佈:2021-09-15
JAVA、POI、Word匯出
關鍵物件:Poi-tl Documentation
學習路徑:http://deepoove.com/poi-tl/#_why_poi_tl
程式碼Demo:
public static void main(String[] args) { HashMap<String, Object> dataMap = new HashMap<>(); Map<String, Object> data = new HashMap<String, Object>(); ArrayList<Map<String, Object>> dataList = newArrayList<>(); //封裝資料 data.put("username", "demo"); data.put("password", "001"); data.put("head", Pictures.ofLocal("C:\\Users\\Pictures\\Saved Pictures\\ais.jpg") .size(35, 35).create()); dataList.add(data); //key要和模板中的開始結束標籤保持一致 dataMap.put("wordExportTemp", dataList);try { String res = wordUtil.tempRender(dataMap); System.out.println(res); } catch (Exception e) { System.out.println("Fail"); } }
public class wordUtil { public static String tempRender(HashMap<String, Object> dataMap) throws Exception {//模板檔案 String inPut = "D:\\tempword\\data\\wordFile.docx"; //生成檔案 String outPut = "D:\\tempword\\data\\2021-09-15\\exportWord.docx"; //獲取模板檔案資料 XWPFWordExtractor extractor = new XWPFWordExtractor(OPCPackage.open(new FileInputStream(inPut))); //獲取String型模板資料 System.out.println(extractor.getText()); FileOutputStream outputStream = new FileOutputStream(outPut); //用來 ConfigureBuilder builder = Configure.builder(); //用預設的方式丟擲異常 builder.useDefaultEL(true); //匹配除了標籤前後綴外的任意字元 builder.buildGrammerRegex(RegexUtils.createGeneral("{{", "}}")); //建立結果物件 XWPFTemplate docx = XWPFTemplate.compile(inPut,builder.build()); //資料渲染 docx.render(dataMap); //資料寫出 docx.write(outputStream); outputStream.flush(); outputStream.close(); docx.close(); return "OK"; } }
模板:
注意:{{?wordExportTemp}} 中的“wordExportTemp”要和封裝資料Map的“key"保持一致!