From 99994a4d922a1f124129661c77ad50f3931632b4 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 29 May 2023 11:45:35 +0800 Subject: [PATCH] fix code --- .../dromara/hutool/poi/excel/ExcelBase.java | 44 ++++++++++++++++++ .../dromara/hutool/poi/excel/ExcelUtil.java | 2 +- .../dromara/hutool/poi/excel/ExcelWriter.java | 45 +------------------ 3 files changed, 47 insertions(+), 44 deletions(-) diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelBase.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelBase.java index 7fe759564..8931b03b8 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelBase.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelBase.java @@ -12,8 +12,12 @@ package org.dromara.hutool.poi.excel; +import org.dromara.hutool.core.data.id.IdUtil; import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.lang.Assert; +import org.dromara.hutool.core.net.url.URLEncoder; +import org.dromara.hutool.core.text.StrUtil; +import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.poi.excel.cell.CellLocation; import org.dromara.hutool.poi.excel.cell.CellUtil; import org.dromara.hutool.poi.excel.style.StyleUtil; @@ -30,6 +34,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.Closeable; import java.io.File; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -511,6 +516,45 @@ public class ExcelBase> implements Closeable { return this.sheet instanceof XSSFSheet || this.sheet instanceof SXSSFSheet; } + /** + * 获取Content-Type头对应的值,可以通过调用以下方法快速设置下载Excel的头信息: + * + *
+	 * response.setContentType(excelWriter.getContentType());
+	 * 
+ * + * @return Content-Type值 + * @since 5.6.7 + */ + public String getContentType() { + return isXlsx() ? ExcelUtil.XLSX_CONTENT_TYPE : ExcelUtil.XLS_CONTENT_TYPE; + } + + /** + * 获取Content-Disposition头对应的值,可以通过调用以下方法快速设置下载Excel的头信息: + * + *
+	 * response.setHeader("Content-Disposition", excelWriter.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8));
+	 * 
+ * + * @param fileName 文件名,如果文件名没有扩展名,会自动按照生成Excel类型补齐扩展名,如果提供空,使用随机UUID + * @param charset 编码,null则使用默认UTF-8编码 + * @return Content-Disposition值 + */ + public String getDisposition(String fileName, Charset charset) { + if (null == charset) { + charset = CharsetUtil.UTF_8; + } + + if (StrUtil.isBlank(fileName)) { + // 未提供文件名使用随机UUID作为文件名 + fileName = IdUtil.fastSimpleUUID(); + } + + fileName = StrUtil.addSuffixIfNot(URLEncoder.encodeAll(fileName, charset), isXlsx() ? ".xlsx" : ".xls"); + return StrUtil.format("attachment; filename=\"{}\"", fileName); + } + /** * 关闭工作簿
* 如果用户设定了目标文件,先写出目标文件后给关闭工作簿 diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelUtil.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelUtil.java index 7d4970baa..56515afd6 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelUtil.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelUtil.java @@ -462,7 +462,7 @@ public class ExcelUtil { * @return 0-》A; 1-》B...26-》AA * @since 4.1.20 */ - public static String indexToColName(int index) { + public static String indexToColName(final int index) { return CellLocationUtil.indexToColName(index); } diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java index ed8e089f3..301c1040d 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelWriter.java @@ -100,8 +100,7 @@ public class ExcelWriter extends ExcelBase { */ private final AtomicInteger currentRow; - // -------------------------------------------------------------------------- Constructor start - + // region Constructors /** * 构造,默认生成xls格式的Excel文件
* 此构造不传入写出的Excel文件路径,只能调用{@link #flush(OutputStream)}方法写出到流
@@ -202,8 +201,7 @@ public class ExcelWriter extends ExcelBase { this.styleSet = new StyleSet(workbook); this.currentRow = new AtomicInteger(0); } - - // -------------------------------------------------------------------------- Constructor end + // endregion /** * 设置单元格值处理逻辑
@@ -384,45 +382,6 @@ public class ExcelWriter extends ExcelBase { return this.currentRow.get(); } - /** - * 获取Content-Disposition头对应的值,可以通过调用以下方法快速设置下载Excel的头信息: - * - *
-	 * response.setHeader("Content-Disposition", excelWriter.getDisposition("test.xlsx", CharsetUtil.CHARSET_UTF_8));
-	 * 
- * - * @param fileName 文件名,如果文件名没有扩展名,会自动按照生成Excel类型补齐扩展名,如果提供空,使用随机UUID - * @param charset 编码,null则使用默认UTF-8编码 - * @return Content-Disposition值 - */ - public String getDisposition(String fileName, Charset charset) { - if (null == charset) { - charset = CharsetUtil.UTF_8; - } - - if (StrUtil.isBlank(fileName)) { - // 未提供文件名使用随机UUID作为文件名 - fileName = IdUtil.fastSimpleUUID(); - } - - fileName = StrUtil.addSuffixIfNot(URLEncoder.encodeAll(fileName, charset), isXlsx() ? ".xlsx" : ".xls"); - return StrUtil.format("attachment; filename=\"{}\"", fileName); - } - - /** - * 获取Content-Type头对应的值,可以通过调用以下方法快速设置下载Excel的头信息: - * - *
-	 * response.setContentType(excelWriter.getContentType());
-	 * 
- * - * @return Content-Type值 - * @since 5.6.7 - */ - public String getContentType() { - return isXlsx() ? ExcelUtil.XLSX_CONTENT_TYPE : ExcelUtil.XLS_CONTENT_TYPE; - } - /** * 设置当前所在行 *