java写入word表格(poi-tl)
1.导入依赖
<!--poi-tl-->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version>
</dependency>
2.代码
自己创建模板。放在(resource/file)
public ApiResult<String> download2(HttpServletResponse response,@RequestParam(value = "apiCode", required = true) String apiCode) throws Exception {String templatePath = getResourceFilePath("file","wordtempalte.docx");//resource下面有file文件夹,文件夹下面是模板ApiPermitInfo data = getPermitInfo(apiCode);writeword(templatePath, response,data);//写入文件return null;}public static String getResourceFilePath(String folderPath, String fileName) {// 构建资源路径String resourcePath = folderPath + "/" + fileName;// 获取资源的URLURL resourceUrl = ResourceUtil.class.getClassLoader().getResource(resourcePath);if (resourceUrl != null) {// 对于JAR包中的资源,直接返回URL的路径部分return resourceUrl.getPath();} else {// 资源不存在return null;}}private void writeword(String templatePath, HttpServletResponse response,ApiPermitInfo data) throws IOException {//解析模板XWPFTemplate template = XWPFTemplate.compile(templatePath);//封装模型数据HashMap<String, Object> map = new HashMap<>();map.put("apiLabel","apiLabel");map.put("apiPath", Texts.of("apiPath").color("0000FF").bold().create());//apiParams getApiParams方法获取一个List类型map.put("apiParams", Tables.create(getApiParams(data.getApiParams()).toArray(new RowRenderData[0])));//渲染数据template.render(map);//以文件形式输出// template.writeAndClose(new FileOutputStream(outputPath));//文件流//下载response.setContentType("application/octet-stream");String formattedNow = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"));response.setHeader("Content-disposition", "attachment;filename=\"" + formattedNow+".docx" + "\"");OutputStream out = response.getOutputStream();BufferedOutputStream bos = new BufferedOutputStream(out);template.write(bos);//浏览器下载PoitlIOUtils.closeQuietlyMulti(template, bos, out);return;}
3.效果
参考:
poi-tl的使用(通俗易懂,全面,内含动态表格实现 !)-CSDN博客
https://deepoove.com/poi-tl/