From c3bb4d2a6181e27b58cca56def0f392d6df7d7a1 Mon Sep 17 00:00:00 2001 From: zhujie <693337446@qq.com> Date: 星期五, 26 十一月 2021 13:01:00 +0800 Subject: [PATCH] add 新增导入支持开启Validator数据验证,支持开启导入异常行继续读取,支持返回导入回执 --- ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 52 ++++++++++++++++++++-------------------------------- 1 files changed, 20 insertions(+), 32 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index f242d8c..8802a54 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -3,22 +3,21 @@ import cn.hutool.core.util.IdUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.convert.ExcelBigNumberConvert; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; +import org.apache.poi.ss.formula.functions.T; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.List; /** * Excel鐩稿叧澶勭悊 * - * @author ruoyi + * @author Lion Li */ public class ExcelUtil { @@ -29,8 +28,21 @@ * @return 杞崲鍚庨泦鍚� */ public static <T> List<T> importExcel(InputStream is, Class<T> clazz) { - return EasyExcel.read(is).autoCloseStream(false).sheet().doReadSync(); + return EasyExcel.read(is).head(clazz).autoCloseStream(false).sheet().doReadSync(); } + + + /** + * 瀵筫xcel琛ㄥ崟榛樿绗竴涓储寮曞悕杞崲鎴恖ist锛圗asyExcel锛� + * + * @param is 杈撳叆娴� + * @return 杞崲鍚庨泦鍚� + */ + public static <T> ExcelResult<T> importExcel(InputStream is, Class<T> clazz, boolean isValidate, boolean skipException) { + ExcelListener<T> listener = new ExcelListener<>(isValidate, skipException); + EasyExcel.read(is, clazz, listener).sheet().doRead(); + return listener.getExcelResult(); + } /** * 瀵筶ist鏁版嵁婧愬皢鍏堕噷闈㈢殑鏁版嵁瀵煎叆鍒癳xcel琛ㄥ崟锛圗asyExcel锛� @@ -43,15 +55,15 @@ try { String filename = encodingFilename(sheetName); response.reset(); - response.addHeader("Access-Control-Allow-Origin", "*"); - response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); - FileUtils.setAttachmentResponseHeader(response, URLEncoder.encode(filename, StandardCharsets.UTF_8.toString())); + FileUtils.setAttachmentResponseHeader(response, filename); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); ServletOutputStream os = response.getOutputStream(); EasyExcel.write(os, clazz) .autoCloseStream(false) // 鑷姩閫傞厤 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + // 澶ф暟鍊艰嚜鍔ㄨ浆鎹� 闃叉澶辩湡 + .registerConverter(new ExcelBigNumberConvert()) .sheet(sheetName).doWrite(list); } catch (IOException e) { throw new RuntimeException("瀵煎嚭Excel寮傚父"); @@ -114,30 +126,6 @@ } } return StringUtils.stripEnd(propertyString.toString(), separator); - } - - /** - * 瑙f瀽瀛楀吀鍊� - * - * @param dictValue 瀛楀吀鍊� - * @param dictType 瀛楀吀绫诲瀷 - * @param separator 鍒嗛殧绗� - * @return 瀛楀吀鏍囩 - */ - public static String convertDictByExp(String dictValue, String dictType, String separator) { - return DictUtils.getDictLabel(dictType, dictValue, separator); - } - - /** - * 鍙嶅悜瑙f瀽鍊煎瓧鍏稿�� - * - * @param dictLabel 瀛楀吀鏍囩 - * @param dictType 瀛楀吀绫诲瀷 - * @param separator 鍒嗛殧绗� - * @return 瀛楀吀鍊� - */ - public static String reverseDictByExp(String dictLabel, String dictType, String separator) { - return DictUtils.getDictValue(dictType, dictLabel, separator); } /** -- Gitblit v1.9.3