From 00eba2fda33e53aadabd68795992d0692a0dec42 Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Thu, 7 Nov 2024 16:10:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eexcel=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/njcn/web/utils/PoiUtil.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/PoiUtil.java diff --git a/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/PoiUtil.java b/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/PoiUtil.java new file mode 100644 index 0000000..c7e8362 --- /dev/null +++ b/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/PoiUtil.java @@ -0,0 +1,91 @@ +package com.njcn.web.utils; + +/** + * @author caozehui + * @data 2024/11/7 + */ +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.CharsetUtil; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import org.apache.poi.ss.usermodel.Workbook; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.net.URLEncoder; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2022年04月01日 20:10 + */ +public class PoiUtil { + + /** + * 根据数值返回适当文字描述 + * 比如:3.14159 - 暂无数据 + */ + public static String dealData(Double value) { + return value == 3.14159 ? "暂无数据" : value + "%"; + } + + /** + * excel包装数字返回的 + */ + public static String dealPOIData(Double value) { + + return " : (" + dealData(value) + ")"; + } + + /** + * 注意:此方法下载完文件后,会删除当前文件 + * + * @param filePath 文件绝对路径 + * @param response 响应 + */ + public static void exportFileByAbsolutePath(String filePath, HttpServletResponse response) { + File file = new File(filePath); + String fileName = file.getName(); + try (ServletOutputStream outputStream = response.getOutputStream(); FileInputStream fileInputStream = new FileInputStream(file)) { + fileName = URLEncoder.encode(fileName, CharsetUtil.UTF_8); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.setContentType("application/octet-stream;charset=" + CharsetUtil.UTF_8); + int len = 0; + byte[] bytes = new byte[1024]; + while ((len = fileInputStream.read(bytes)) != -1) { + outputStream.write(bytes, 0, len); + outputStream.flush(); + } + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(CommonResponseEnum.EXPORT_FILE_ERROR); + } + FileUtil.del(file); + } + + + /** + * 按工作蒲导出文件 + * + * @param workbook 工作蒲 + * @param fileName 文件名 + * @param response 响应 + */ + public static void exportFileByWorkbook(Workbook workbook, String fileName, HttpServletResponse response) { + response.reset(); + try (ServletOutputStream outputStream = response.getOutputStream()) { + fileName = URLEncoder.encode(fileName, CharsetUtil.UTF_8); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); + response.setContentType("application/octet-stream;charset=" + CharsetUtil.UTF_8); + workbook.write(outputStream); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(CommonResponseEnum.EXPORT_FILE_ERROR); + } + } + +} +