From 182b770506b55d615d1670654028ea0dc1da6ca7 Mon Sep 17 00:00:00 2001 From: Yan Yuan Date: Fri, 27 Mar 2020 12:11:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=89=E5=B1=82?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4=E6=97=B6=EF=BC=8C=E8=A7=A3=E6=9E=90=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E5=B1=82=E8=A1=A8=E5=A4=B4=E6=A0=87=E9=A2=98=E4=B8=8D?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/imports/ExcelImportService.java | 85 +++++++++++-------- 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java index c059edb..22a1540 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java @@ -59,7 +59,7 @@ public class ExcelImportService extends ImportBaseService { private CellValueService cellValueServer; - private boolean verifyFail = false; + private boolean verifyFail = false; /** * 异常数据styler */ @@ -67,7 +67,7 @@ public class ExcelImportService extends ImportBaseService { private List successRow; private List failRow; - private List failCollection; + private List failCollection; public ExcelImportService() { successRow = new ArrayList(); @@ -101,7 +101,7 @@ public class ExcelImportService extends ImportBaseService { // 是否需要加上这个对象 boolean isUsed = false; for (int i = row.getFirstCellNum(); i < titlemap.size(); i++) { - Cell cell = row.getCell(i); + Cell cell = row.getCell(i); String titleString = (String) titlemap.get(i); if (param.getExcelParams().containsKey(titleString)) { if (param.getExcelParams().get(titleString).getType() == BaseEntityTypeConstants.IMAGE_TYPE) { @@ -155,14 +155,14 @@ public class ExcelImportService extends ImportBaseService { private List importExcel(Collection result, Sheet sheet, Class pojoClass, ImportParams params, Map pictures) throws Exception { - List collection = new ArrayList(); - Map excelParams = new HashMap(); - List excelCollection = new ArrayList(); - String targetId = null; + List collection = new ArrayList(); + Map excelParams = new HashMap(); + List excelCollection = new ArrayList(); + String targetId = null; i18nHandler = params.getI18nHandler(); boolean isMap = Map.class.equals(pojoClass); if (!isMap) { - Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); + Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); if (etarget != null) { targetId = etarget.value(); @@ -175,10 +175,10 @@ public class ExcelImportService extends ImportBaseService { } Map titlemap = getTitleMap(rows, params, excelCollection, excelParams); checkIsValidTemplate(titlemap, excelParams, params, excelCollection); - Row row = null; - Object object = null; + Row row = null; + Object object = null; String picId; - int readRow = 1; + int readRow = 1; //跳过无效行 for (int i = 0; i < params.getStartRows(); i++) { rows.next(); @@ -189,12 +189,12 @@ public class ExcelImportService extends ImportBaseService { } if (params.isConcurrentTask()) { ForkJoinPool forkJoinPool = new ForkJoinPool(); - int endRow = sheet.getLastRowNum() - params.getLastOfInvalidRow(); + int endRow = sheet.getLastRowNum() - params.getLastOfInvalidRow(); if (params.getReadRows() > 0) { endRow = params.getReadRows(); } - ExcelImportForkJoinWork task = new ExcelImportForkJoinWork(params.getStartRows() + params.getHeadRows() + params.getTitleRows(), endRow, sheet, params, pojoClass, this, targetId, titlemap, excelParams); - ExcelImportResult forkJoinResult = forkJoinPool.invoke(task); + ExcelImportForkJoinWork task = new ExcelImportForkJoinWork(params.getStartRows() + params.getHeadRows() + params.getTitleRows(), endRow, sheet, params, pojoClass, this, targetId, titlemap, excelParams); + ExcelImportResult forkJoinResult = forkJoinPool.invoke(task); collection = forkJoinResult.getList(); failCollection = forkJoinResult.getFailList(); } else { @@ -211,10 +211,10 @@ public class ExcelImportService extends ImportBaseService { break; } /* 如果当前行的单元格都是无效的,那就继续下一行 */ - if (row.getLastCellNum()<0) { + if (row.getLastCellNum() < 0) { continue; } - if(isMap && object != null) { + if (isMap && object != null) { ((Map) object).put("excelRowNum", row.getRowNum()); } errorMsg = new StringBuilder(); @@ -232,7 +232,7 @@ public class ExcelImportService extends ImportBaseService { try { Set keys = titlemap.keySet(); for (Integer cn : keys) { - Cell cell = row.getCell(cn); + Cell cell = row.getCell(cn); String titleString = (String) titlemap.get(cn); if (excelParams.containsKey(titleString) || isMap) { if (excelParams.get(titleString) != null @@ -288,7 +288,7 @@ public class ExcelImportService extends ImportBaseService { public boolean verifyingDataValidity(Object object, Row row, ImportParams params, boolean isMap, StringBuilder fieldErrorMsg) { boolean isAdd = true; - Cell cell = null; + Cell cell = null; if (params.isNeedVerify()) { String errorMsg = PoiValidationUtil.validation(object, params.getVerifyGroup()); if (StringUtils.isNotEmpty(errorMsg)) { @@ -336,7 +336,7 @@ public class ExcelImportService extends ImportBaseService { if (cell != null) { cell.setCellStyle(errorCellStyle); failRow.add(row); - if(isMap) { + if (isMap) { ((Map) object).put("excelErrorMsg", cell.getStringCellValue()); } } else { @@ -351,11 +351,11 @@ public class ExcelImportService extends ImportBaseService { private Map getTitleMap(Iterator rows, ImportParams params, List excelCollection, Map excelParams) { - Map titlemap = new LinkedHashMap(); - Iterator cellTitle; - String collectionName = null; + Map titlemap = new LinkedHashMap(); + Iterator cellTitle; + String collectionName = null; ExcelCollectionParams collectionParams = null; - Row row = null; + Row row = null; for (int j = 0; j < params.getHeadRows(); j++) { row = rows.next(); if (row == null) { @@ -363,7 +363,7 @@ public class ExcelImportService extends ImportBaseService { } cellTitle = row.cellIterator(); while (cellTitle.hasNext()) { - Cell cell = cellTitle.next(); + Cell cell = cellTitle.next(); String value = getKeyValue(cell); value = value.replace("\n", ""); int i = cell.getColumnIndex(); @@ -374,8 +374,7 @@ public class ExcelImportService extends ImportBaseService { collectionParams = getCollectionParams(excelCollection, collectionName); titlemap.put(i, collectionName + "_" + value); } else if (StringUtils.isNotEmpty(collectionName) && collectionParams != null - && collectionParams.getExcelParams() - .containsKey(collectionName + "_" + value)) { + && containsKey(collectionParams, collectionName + "_" + value)) { titlemap.put(i, collectionName + "_" + value); } else { collectionName = null; @@ -399,6 +398,24 @@ public class ExcelImportService extends ImportBaseService { return titlemap; } + /** + * 判断多层表头时,子表头是否存在 + * + * @param collectionParams + * @param key + * @return + */ + private Boolean containsKey(ExcelCollectionParams collectionParams, String key) { + Map excelParams = collectionParams.getExcelParams(); + Set keySet = excelParams.keySet(); + for (String keyTitle : keySet) { + if (keyTitle.startsWith(key)) { + return true; + } + } + return false; + } + /** * 获取这个名称对应的集合信息 */ @@ -420,12 +437,12 @@ public class ExcelImportService extends ImportBaseService { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Excel import start ,class is {}", pojoClass); } - List result = new ArrayList(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ExcelImportResult importResult; + List result = new ArrayList(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ExcelImportResult importResult; try { byte[] buffer = new byte[1024]; - int len; + int len; while ((len = inputstream.read(buffer)) > -1) { baos.write(buffer, 0, len); } @@ -478,7 +495,7 @@ public class ExcelImportService extends ImportBaseService { InputStream successIs = new ByteArrayInputStream(baos.toByteArray()); try { Workbook successBook = WorkbookFactory.create(successIs); - if (params.isVerifyFileSplit()){ + if (params.isVerifyFileSplit()) { importResult.setWorkbook(removeSuperfluousRows(successBook, failRow, params)); importResult.setFailWorkbook(removeSuperfluousRows(book, successRow, params)); } else { @@ -640,12 +657,12 @@ public class ExcelImportService extends ImportBaseService { if (image == null) { return; } - byte[] data = image.getData(); + byte[] data = image.getData(); String fileName = "pic" + Math.round(Math.random() * 100000000000L); fileName += "." + PoiPublicUtil.getFileExtendName(data); if (excelParams.get(titleString).getSaveType() == 1) { - String path = getSaveUrl(excelParams.get(titleString), object); - File savefile = new File(path); + String path = getSaveUrl(excelParams.get(titleString), object); + File savefile = new File(path); if (!savefile.exists()) { savefile.mkdirs(); } -- Gitee From 5f9d01284be5bafa535c50c1a0e43496d327bbc2 Mon Sep 17 00:00:00 2001 From: Yan Yuan Date: Fri, 27 Mar 2020 12:18:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=89=E5=B1=82?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4=E6=97=B6=EF=BC=8C=E8=A7=A3=E6=9E=90=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E5=B1=82=E8=A1=A8=E5=A4=B4=E6=A0=87=E9=A2=98=E4=B8=8D?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/afterturn/easypoi/excel/imports/ExcelImportService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java index 22a1540..d22ba38 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java @@ -399,7 +399,7 @@ public class ExcelImportService extends ImportBaseService { } /** - * 判断多层表头时,子表头是否存在 + * 判断多层表头时,子表头是否存在与否 * * @param collectionParams * @param key -- Gitee