mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
Merge pull request #1639 from nancheung97/excel
🚩 新增操作excel时快速获取Content-Type的方法
This commit is contained in:
commit
80e0bbbbc1
@ -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内容<br>
|
||||
* 默认调用第一个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内容<br>
|
||||
* 默认调用第一个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内容<br>
|
||||
* 默认调用第一个sheet,读取结束自动关闭流
|
||||
*
|
||||
*
|
||||
* @param bookStream Excel文件的流
|
||||
* @return {@link ExcelReader}
|
||||
*/
|
||||
@ -303,7 +313,7 @@ public class ExcelUtil {
|
||||
/**
|
||||
* 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容<br>
|
||||
* 默认调用第一个sheet
|
||||
*
|
||||
*
|
||||
* @param bookStream Excel文件的流
|
||||
* @param closeAfterRead 读取结束是否关闭流
|
||||
* @return {@link ExcelReader}
|
||||
@ -320,7 +330,7 @@ public class ExcelUtil {
|
||||
/**
|
||||
* 获取Excel读取器,通过调用{@link ExcelReader}的read或readXXX方法读取Excel内容<br>
|
||||
* 读取结束自动关闭流
|
||||
*
|
||||
*
|
||||
* @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内容<br>
|
||||
* 读取结束自动关闭流
|
||||
*
|
||||
*
|
||||
* @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<br>
|
||||
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流<br>
|
||||
* 若写出到文件,还需调用{@link ExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link ExcelWriter#flush()}方法写出到文件
|
||||
*
|
||||
*
|
||||
* @return {@link ExcelWriter}
|
||||
* @since 3.2.1
|
||||
*/
|
||||
@ -407,7 +417,7 @@ public class ExcelUtil {
|
||||
* 获得{@link ExcelWriter},默认写出到第一个sheet<br>
|
||||
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流<br>
|
||||
* 若写出到文件,还需调用{@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<br>
|
||||
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流<br>
|
||||
* 若写出到文件,还需调用{@link BigExcelWriter#setDestFile(File)}方法自定义写出的文件,然后调用{@link BigExcelWriter#flush()}方法写出到文件
|
||||
*
|
||||
*
|
||||
* @return {@link BigExcelWriter}
|
||||
* @since 4.1.13
|
||||
*/
|
||||
@ -514,7 +524,7 @@ public class ExcelUtil {
|
||||
* 获得{@link BigExcelWriter},默认写出到第一个sheet<br>
|
||||
* 不传入写出的Excel文件路径,只能调用ExcelWriter#flush(OutputStream)方法写出到流<br>
|
||||
* 若写出到文件,还需调用{@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
|
||||
|
@ -382,6 +382,19 @@ public class ExcelWriter extends ExcelBase<ExcelWriter> {
|
||||
return StrUtil.format("attachment; filename=\"{}\"; filename*={}''{}", fileName, charset.name(), fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Content-Type头对应的值,可以通过调用以下方法快速设置下载Excel的头信息:
|
||||
*
|
||||
* <pre>
|
||||
* response.setContentType(excelWriter.getContentType());
|
||||
* </pre>
|
||||
*
|
||||
* @return Content-Type值
|
||||
*/
|
||||
public String getContentType() {
|
||||
return isXlsx() ? ExcelUtil.XLSX_CONTENT_TYPE : ExcelUtil.XLS_CONTENT_TYPE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前所在行
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user