Browse Source

deprecate methods

Looly 5 years ago
parent
commit
e0508b0b88

+ 1 - 0
CHANGELOG.md

@@ -15,6 +15,7 @@
 * 【core  】     ArrayUtil增加isAllNull方法(issue#1004@Github)
 * 【core  】     CollUtil增加contains方法(pr#152@Gitee)
 * 【core  】     ArrayUtil增加isAllNotNull方法(pr#1008@Github)
+* 【poi   】     closeAfterRead参数无效,方法设为过期(issue#1007@Github)
 
 ### Bug修复#
 * 【core  】     修复原始类型转换时,转换失败没有抛出异常的问题

+ 27 - 3
hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelReader.java

@@ -87,9 +87,21 @@ public class ExcelReader extends ExcelBase<ExcelReader> {
 	 * @param bookStream     Excel文件的流
 	 * @param sheetIndex     sheet序号,0表示第一个sheet
 	 * @param closeAfterRead 读取结束是否关闭流
+	 * @deprecated 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。
 	 */
+	@Deprecated
 	public ExcelReader(InputStream bookStream, int sheetIndex, boolean closeAfterRead) {
-		this(WorkbookUtil.createBook(bookStream, closeAfterRead), sheetIndex);
+		this(WorkbookUtil.createBook(bookStream), sheetIndex);
+	}
+
+	/**
+	 * 构造
+	 *
+	 * @param bookStream     Excel文件的流
+	 * @param sheetIndex     sheet序号,0表示第一个sheet
+	 */
+	public ExcelReader(InputStream bookStream, int sheetIndex) {
+		this(WorkbookUtil.createBook(bookStream), sheetIndex);
 	}
 
 	/**
@@ -98,9 +110,21 @@ public class ExcelReader extends ExcelBase<ExcelReader> {
 	 * @param bookStream     Excel文件的流
 	 * @param sheetName      sheet名,第一个默认是sheet1
 	 * @param closeAfterRead 读取结束是否关闭流
+	 * @deprecated 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义。
 	 */
+	@Deprecated
 	public ExcelReader(InputStream bookStream, String sheetName, boolean closeAfterRead) {
-		this(WorkbookUtil.createBook(bookStream, closeAfterRead), sheetName);
+		this(WorkbookUtil.createBook(bookStream), sheetName);
+	}
+
+	/**
+	 * 构造
+	 *
+	 * @param bookStream     Excel文件的流
+	 * @param sheetName      sheet名,第一个默认是sheet1
+	 */
+	public ExcelReader(InputStream bookStream, String sheetName) {
+		this(WorkbookUtil.createBook(bookStream), sheetName);
 	}
 
 	/**
@@ -398,7 +422,7 @@ public class ExcelReader extends ExcelBase<ExcelReader> {
 
 		final List<T> beanList = new ArrayList<>(mapList.size());
 		for (Map<String, Object> map : mapList) {
-			beanList.add(BeanUtil.mapToBean(map, beanType, false));
+			beanList.add(BeanUtil.toBean(map, beanType));
 		}
 		return beanList;
 	}

+ 51 - 15
hutool-poi/src/main/java/cn/hutool/poi/excel/WorkbookUtil.java

@@ -1,22 +1,21 @@
 
 package cn.hutool.poi.excel;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IORuntimeException;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.poi.exceptions.POIException;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.poi.exceptions.POIException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 
 /**
  * Excel工作簿{@link Workbook}相关工具类
@@ -94,9 +93,20 @@ public class WorkbookUtil {
 	 * @param in Excel输入流
 	 * @param closeAfterRead 读取结束是否关闭流
 	 * @return {@link Workbook}
+	 * @deprecated 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义,请使用{@link #createBook(InputStream)}
 	 */
 	public static Workbook createBook(InputStream in, boolean closeAfterRead) {
-		return createBook(in, null, closeAfterRead);
+		return createBook(in, null);
+	}
+
+	/**
+	 * 创建或加载工作簿
+	 *
+	 * @param in Excel输入流
+	 * @return {@link Workbook}
+	 */
+	public static Workbook createBook(InputStream in) {
+		return createBook(in, null);
 	}
 
 	/**
@@ -107,16 +117,28 @@ public class WorkbookUtil {
 	 * @param closeAfterRead 读取结束是否关闭流
 	 * @return {@link Workbook}
 	 * @since 4.0.3
+	 * @deprecated 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义,请使用{@link #createBook(InputStream, String)}
 	 */
+	@Deprecated
 	public static Workbook createBook(InputStream in, String password, boolean closeAfterRead) {
+		return createBook(in, password);
+	}
+
+	/**
+	 * 创建或加载工作簿
+	 *
+	 * @param in Excel输入流,使用完毕自动关闭流
+	 * @param password 密码
+	 * @return {@link Workbook}
+	 * @since 4.0.3
+	 */
+	public static Workbook createBook(InputStream in, String password) {
 		try {
 			return WorkbookFactory.create(IoUtil.toMarkSupportStream(in), password);
 		} catch (Exception e) {
 			throw new POIException(e);
-		} finally {
-			if (closeAfterRead) {
-				IoUtil.close(in);
-			}
+		} finally{
+			IoUtil.close(in);
 		}
 	}
 
@@ -191,12 +213,26 @@ public class WorkbookUtil {
 	 * @param closeAfterRead 读取结束是否关闭流
 	 * @return {@link SXSSFWorkbook}
 	 * @since 4.1.13
+	 * @deprecated 使用完毕无论是否closeAfterRead,poi会关闭流,此参数无意义,请使用{@link #createSXSSFBook(InputStream, String)}
 	 */
+	@Deprecated
 	public static SXSSFWorkbook createSXSSFBook(InputStream in, String password, boolean closeAfterRead) {
 		return toSXSSFBook(createBook(in, password, closeAfterRead));
 	}
 
 	/**
+	 * 创建或加载SXSSFWorkbook工作簿
+	 *
+	 * @param in Excel输入流
+	 * @param password 密码
+	 * @return {@link SXSSFWorkbook}
+	 * @since 4.1.13
+	 */
+	public static SXSSFWorkbook createSXSSFBook(InputStream in, String password) {
+		return toSXSSFBook(createBook(in, password));
+	}
+
+	/**
 	 * 创建SXSSFWorkbook,用于大批量数据写出
 	 * 
 	 * @return {@link SXSSFWorkbook}