//需要的jar,看你需要移除包中的org.slf4j
<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
try { String downloadFilename = UUID.randomUUID()+".docx";//文件的名稱 downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//轉換中文否則可能會產生亂碼 OrderContract orderContract = optional.get();//獲取需要的數據 response.reset(); response.setCharacterEncoding("UTF-8"); response.setContentType("application/octet-stream;charset=utf-8");//octet-stream支持所有以流形勢輸出的文 response.setHeader("Content-disposition", "attachment;filename=" +downloadFilename ); Map<String, Object> datas = new HashMap<String, Object>() {{ put("company", new TextRenderData("000000", userHr.getCompany()));//000000用來設置字體顏色 Date today = new Date(); put("startDate", new TextRenderData("000000", DateUtil.dataToString(today, "yyyy年MM月dd日"))); put("endDate", new TextRenderData("000000", DateUtil.dataToString(DateUtil.getOneYearLater(today, 1), "yyyy年MM月dd日"))); double money = orderContract.getTotalMoney(); put("money", new TextRenderData("000000", String.valueOf(money))); put("upperMoney", new TextRenderData("000000", ConvertNumberToUpper.digitUppercase(money))); put("email", new TextRenderData("000000", userHr.getEmail())); put("taxPayerId", new TextRenderData("000000", userHr.getTaxpayerId())); }}; String path = ""; if ("dev".equals(activeEnv)) { path = "*****/doc/contract.docx"; } else if ("test".equals(activeEnv)) { path = "***/contract.docx"; } else { path = "***/contract.docx"; } //render XWPFTemplate template = XWPFTemplate.compile(path).render(datas);//將數據填充到模板 ServletOutputStream out = response.getOutputStream(); template.write(out);//將流寫進outputstream流中 template.close(); out.close(); } catch (IOException e) { e.printStackTrace(); }