diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelUtil.java index cddf33517..4ef625822 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelUtil.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelUtil.java @@ -19,16 +19,26 @@ import java.io.InputStream; /** * Excel工具类,不建议直接使用index直接操作sheet,在wps/excel中sheet显示顺序与index无关,还有隐藏sheet - * + * * @author Looly * */ public class ExcelUtil { + /** + * xlx的ContentType + */ + public static final String XLS_CONTENT_TYPE = "application/vnd.ms-excel;charset=utf-8"; + + /** + * xlsx的ContentType + */ + public static final String XLSX_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"; + // ------------------------------------------------------------------------------------ Read by Sax start /** * 通过Sax方式读取Excel,同时支持03和07格式 - * + * * @param path Excel文件路径 * @param rid sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -52,7 +62,7 @@ public class ExcelUtil { /** * 通过Sax方式读取Excel,同时支持03和07格式 - * + * * @param file Excel文件 * @param rid sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -78,7 +88,7 @@ public class ExcelUtil { /** * 通过Sax方式读取Excel,同时支持03和07格式 - * + * * @param in Excel流 * @param rid sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -106,7 +116,7 @@ public class ExcelUtil { /** * Sax方式读取Excel07 - * + * * @param in 输入流 * @param rid Sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -125,7 +135,7 @@ public class ExcelUtil { /** * Sax方式读取Excel07 - * + * * @param file 文件 * @param rid Sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -144,7 +154,7 @@ public class ExcelUtil { /** * Sax方式读取Excel07 - * + * * @param path 路径 * @param rid Sheet rid,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -163,7 +173,7 @@ public class ExcelUtil { /** * Sax方式读取Excel03 - * + * * @param in 输入流 * @param sheetIndex Sheet索引,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -182,7 +192,7 @@ public class ExcelUtil { /** * Sax方式读取Excel03 - * + * * @param file 文件 * @param sheetIndex Sheet索引,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -201,7 +211,7 @@ public class ExcelUtil { /** * Sax方式读取Excel03 - * + * * @param path 路径 * @param sheetIndex Sheet索引,-1表示全部Sheet, 0表示第一个Sheet * @param rowHandler 行处理器 @@ -223,7 +233,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 默认调用第一个sheet - * + * * @param bookFilePath Excel文件路径,绝对路径或相对于ClassPath路径 * @return {@link ExcelReader} * @since 3.1.1 @@ -235,7 +245,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 默认调用第一个sheet - * + * * @param bookFile Excel文件 * @return {@link ExcelReader} */ @@ -245,7 +255,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容 - * + * * @param bookFilePath Excel文件路径,绝对路径或相对于ClassPath路径 * @param sheetIndex sheet序号,0表示第一个sheet * @return {@link ExcelReader} @@ -261,7 +271,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容 - * + * * @param bookFile Excel文件 * @param sheetIndex sheet序号,0表示第一个sheet * @return {@link ExcelReader} @@ -276,7 +286,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容 - * + * * @param bookFile Excel文件 * @param sheetName sheet名,第一个默认是sheet1 * @return {@link ExcelReader} @@ -292,7 +302,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 默认调用第一个sheet,读取结束自动关闭流 - * + * * @param bookStream Excel文件的流 * @return {@link ExcelReader} */ @@ -303,7 +313,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 默认调用第一个sheet - * + * * @param bookStream Excel文件的流 * @param closeAfterRead 读取结束是否关闭流 * @return {@link ExcelReader} @@ -320,7 +330,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 读取结束自动关闭流 - * + * * @param bookStream Excel文件的流 * @param sheetIndex sheet序号,0表示第一个sheet * @return {@link ExcelReader} @@ -335,7 +345,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容 - * + * * @param bookStream Excel文件的流 * @param sheetIndex sheet序号,0表示第一个sheet * @param closeAfterRead 读取结束是否关闭流 @@ -355,7 +365,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容
* 读取结束自动关闭流 - * + * * @param bookStream Excel文件的流 * @param sheetName sheet名,第一个默认是sheet1 * @return {@link ExcelReader} @@ -370,7 +380,7 @@ public class ExcelUtil { /** * 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容 - * + * * @param bookStream Excel文件的流 * @param sheetName sheet名,第一个默认是sheet1 * @param closeAfterRead 读取结束是否关闭流 @@ -391,7 +401,7 @@ public class ExcelUtil { * 获得{@link ExcelWriter},默认写出到第一个sheet
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
* 若写出到文件,还需调用{@link ExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link ExcelWriter#flush()}方法写出到文件 - * + * * @return {@link ExcelWriter} * @since 3.2.1 */ @@ -407,7 +417,7 @@ public class ExcelUtil { * 获得{@link ExcelWriter},默认写出到第一个sheet
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
* 若写出到文件,还需调用{@link ExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link ExcelWriter#flush()}方法写出到文件 - * + * * @param isXlsx 是否为xlsx格式 * @return {@link ExcelWriter} * @since 3.2.1 @@ -422,7 +432,7 @@ public class ExcelUtil { /** * 获得{@link ExcelWriter},默认写出到第一个sheet - * + * * @param destFilePath 目标文件路径 * @return {@link ExcelWriter} */ @@ -433,10 +443,10 @@ public class ExcelUtil { throw new DependencyException(ObjectUtil.defaultIfNull(e.getCause(), e), PoiChecker.NO_POI_ERROR_MSG); } } - + /** * 获得{@link ExcelWriter},默认写出到第一个sheet - * + * * @param sheetName Sheet名 * @return {@link ExcelWriter} * @since 4.5.18 @@ -451,7 +461,7 @@ public class ExcelUtil { /** * 获得{@link ExcelWriter},默认写出到第一个sheet,名字为sheet1 - * + * * @param destFile 目标文件 * @return {@link ExcelWriter} */ @@ -465,7 +475,7 @@ public class ExcelUtil { /** * 获得{@link ExcelWriter} - * + * * @param destFilePath 目标文件路径 * @param sheetName sheet表名 * @return {@link ExcelWriter} @@ -480,7 +490,7 @@ public class ExcelUtil { /** * 获得{@link ExcelWriter} - * + * * @param destFile 目标文件 * @param sheetName sheet表名 * @return {@link ExcelWriter} @@ -498,7 +508,7 @@ public class ExcelUtil { * 获得{@link BigExcelWriter},默认写出到第一个sheet
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
* 若写出到文件,还需调用{@link BigExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link BigExcelWriter#flush()}方法写出到文件 - * + * * @return {@link BigExcelWriter} * @since 4.1.13 */ @@ -514,7 +524,7 @@ public class ExcelUtil { * 获得{@link BigExcelWriter},默认写出到第一个sheet
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流
* 若写出到文件,还需调用{@link BigExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link BigExcelWriter#flush()}方法写出到文件 - * + * * @param rowAccessWindowSize 在内存中的行数 * @return {@link BigExcelWriter} * @since 4.1.13 @@ -529,7 +539,7 @@ public class ExcelUtil { /** * 获得{@link BigExcelWriter},默认写出到第一个sheet - * + * * @param destFilePath 目标文件路径 * @return {@link BigExcelWriter} */ @@ -543,7 +553,7 @@ public class ExcelUtil { /** * 获得{@link BigExcelWriter},默认写出到第一个sheet,名字为sheet1 - * + * * @param destFile 目标文件 * @return {@link BigExcelWriter} */ @@ -557,7 +567,7 @@ public class ExcelUtil { /** * 获得{@link BigExcelWriter} - * + * * @param destFilePath 目标文件路径 * @param sheetName sheet表名 * @return {@link BigExcelWriter} @@ -572,7 +582,7 @@ public class ExcelUtil { /** * 获得{@link BigExcelWriter} - * + * * @param destFile 目标文件 * @param sheetName sheet表名 * @return {@link BigExcelWriter} @@ -587,7 +597,7 @@ public class ExcelUtil { /** * 将Sheet列号变为列名 - * + * * @param index 列号, 从0开始 * @return 0-》A; 1-》B...26-》AA * @since 4.1.20 @@ -610,7 +620,7 @@ public class ExcelUtil { /** * 根据表元的列名转换为列号 - * + * * @param colName 列名, 从A开始 * @return A1-》0; B1-》1...AA1-》26 * @since 4.1.20 diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java index d4abc369b..193ecc401 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java @@ -382,6 +382,19 @@ public class ExcelWriter extends ExcelBase { return StrUtil.format("attachment; filename=\"{}\"; filename*={}''{}", fileName, charset.name(), fileName); } + /** + * 获取Content-Type头对应的值,可以通过调用以下方法快速设置下载Excel的头信息: + * + *
+	 * response.setContentType(excelWriter.getContentType());
+	 * 
+ * + * @return Content-Type值 + */ + public String getContentType() { + return isXlsx() ? ExcelUtil.XLSX_CONTENT_TYPE : ExcelUtil.XLS_CONTENT_TYPE; + } + /** * 设置当前所在行 *