1. 程式人生 > 其它 >Java學習之匯出word文件

Java學習之匯出word文件

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 = new
ArrayList<>(); //封裝資料 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"保持一致!

結果