diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelConfig.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelConfig.java index d5889fc68..47d8d902e 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelConfig.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/ExcelConfig.java @@ -105,13 +105,13 @@ public class ExcelConfig { * @param headerList 原标题列表 * @return 转换别名列表 */ - public List aliasHeader(final List headerList) { + public List aliasHeader(final List headerList) { if (CollUtil.isEmpty(headerList)) { return new ArrayList<>(0); } final int size = headerList.size(); - final List result = new ArrayList<>(size); + final List result = new ArrayList<>(size); for (int i = 0; i < size; i++) { result.add(aliasHeader(headerList.get(i), i)); } @@ -125,16 +125,15 @@ public class ExcelConfig { * @param index 标题所在列号,当标题为空时,列号对应的字母便是header * @return 转换别名列表 */ - public String aliasHeader(final Object headerObj, final int index) { + public Object aliasHeader(final Object headerObj, final int index) { if (null == headerObj) { return CellReferenceUtil.indexToColName(index); } - final String header = headerObj.toString(); if (null != this.headerAlias) { - return ObjUtil.defaultIfNull(this.headerAlias.get(header), header); + return ObjUtil.defaultIfNull(this.headerAlias.get(headerObj.toString()), headerObj); } - return header; + return headerObj; } /** diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/ExcelReader.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/ExcelReader.java index 8d61a9af5..6b6ae9aac 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/ExcelReader.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/ExcelReader.java @@ -246,7 +246,7 @@ public class ExcelReader extends ExcelBase { * * @return Map的列表 */ - public List> readAll() { + public List> readAll() { return read(0, 1, Integer.MAX_VALUE); } @@ -259,7 +259,7 @@ public class ExcelReader extends ExcelBase { * @param endRowIndex 读取结束行(包含,从0开始计数) * @return Map的列表 */ - public List> read(final int headerRowIndex, final int startRowIndex, final int endRowIndex) { + public List> read(final int headerRowIndex, final int startRowIndex, final int endRowIndex) { final MapSheetReader reader = new MapSheetReader(headerRowIndex, startRowIndex, endRowIndex); reader.setExcelConfig(this.config); return read(reader); diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/BeanSheetReader.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/BeanSheetReader.java index d2151b222..b989ee733 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/BeanSheetReader.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/BeanSheetReader.java @@ -53,14 +53,14 @@ public class BeanSheetReader implements SheetReader> { @Override @SuppressWarnings("unchecked") public List read(final Sheet sheet) { - final List> mapList = mapSheetReader.read(sheet); + final List> mapList = mapSheetReader.read(sheet); if (Map.class.isAssignableFrom(this.beanClass)) { return (List) mapList; } final List beanList = new ArrayList<>(mapList.size()); final CopyOptions copyOptions = CopyOptions.of().setIgnoreError(true); - for (final Map map : mapList) { + for (final Map map : mapList) { beanList.add(BeanUtil.toBean(map, this.beanClass, copyOptions)); } return beanList; diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/ListSheetReader.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/ListSheetReader.java index b58ffb021..6451827a6 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/ListSheetReader.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/ListSheetReader.java @@ -63,7 +63,7 @@ public class ListSheetReader extends AbstractSheetReader>> { if (CollUtil.isNotEmpty(rowList) || !ignoreEmptyRow) { if (aliasFirstLine && i == startRowIndex) { // 第一行作为标题行,替换别名 - rowList = Convert.toList(Object.class, this.config.aliasHeader(rowList)); + rowList = this.config.aliasHeader(rowList); } resultList.add(rowList); } diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/MapSheetReader.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/MapSheetReader.java index 95ea384b5..a73648a91 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/MapSheetReader.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/reader/sheet/MapSheetReader.java @@ -33,7 +33,7 @@ import java.util.Map; * @author looly * @since 5.4.4 */ -public class MapSheetReader extends AbstractSheetReader>> { +public class MapSheetReader extends AbstractSheetReader>> { private final int headerRowIndex; @@ -50,7 +50,7 @@ public class MapSheetReader extends AbstractSheetReader } @Override - public List> read(final Sheet sheet) { + public List> read(final Sheet sheet) { // 边界判断 final int firstRowNum = sheet.getFirstRowNum(); final int lastRowNum = sheet.getLastRowNum(); @@ -73,9 +73,9 @@ public class MapSheetReader extends AbstractSheetReader final int endRowIndex = Math.min(this.cellRangeAddress.getLastRow(), lastRowNum);// 读取结束行(包含) // 读取header - final List headerList = this.config.aliasHeader(readRow(sheet, headerRowIndex)); + final List headerList = this.config.aliasHeader(readRow(sheet, headerRowIndex)); - final List> result = new ArrayList<>(endRowIndex - startRowIndex + 1); + final List> result = new ArrayList<>(endRowIndex - startRowIndex + 1); final boolean ignoreEmptyRow = this.config.isIgnoreEmptyRow(); List rowList; for (int i = startRowIndex; i <= endRowIndex; i++) { diff --git a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/ExcelUtilTest.java b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/ExcelUtilTest.java index 0d6648b91..6ae2cc156 100644 --- a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/ExcelUtilTest.java +++ b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/ExcelUtilTest.java @@ -72,7 +72,7 @@ public class ExcelUtilTest { @Test public void getReaderByBookFilePathAndSheetNameTest() { final ExcelReader reader = ExcelUtil.getReader("aaa.xlsx", "12"); - final List> list = reader.readAll(); + final List> list = reader.readAll(); reader.close(); Assertions.assertEquals(1L, list.get(1).get("鞋码")); } diff --git a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/ExcelReadTest.java b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/ExcelReadTest.java index 627965f6c..a3c33dca5 100644 --- a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/ExcelReadTest.java +++ b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/ExcelReadTest.java @@ -58,8 +58,8 @@ public class ExcelReadTest { Assertions.assertEquals("checkPerm", read.get(0).get(2)); Assertions.assertEquals("allotAuditPerm", read.get(0).get(3)); - final List> readAll = reader.readAll(); - for (final Map map : readAll) { + final List> readAll = reader.readAll(); + for (final Map map : readAll) { Assertions.assertTrue(map.containsKey("userName")); Assertions.assertTrue(map.containsKey("storageName")); Assertions.assertTrue(map.containsKey("checkPerm")); @@ -70,7 +70,7 @@ public class ExcelReadTest { @Test public void excelReadTestOfEmptyLine() { final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("priceIndex.xls")); - final List> readAll = reader.readAll(); + final List> readAll = reader.readAll(); Assertions.assertEquals(4, readAll.size()); } @@ -137,7 +137,7 @@ public class ExcelReadTest { @Test public void excelReadToMapListTest() { final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx")); - final List> readAll = reader.readAll(); + final List> readAll = reader.readAll(); Assertions.assertEquals("张三", readAll.get(0).get("姓名")); Assertions.assertEquals("男", readAll.get(0).get("性别")); @@ -241,7 +241,7 @@ public class ExcelReadTest { @Disabled public void readEmptyTest(){ final ExcelReader reader = ExcelUtil.getReader("d:/test/issue.xlsx"); - final List> maps = reader.readAll(); + final List> maps = reader.readAll(); Console.log(maps); } @@ -274,14 +274,14 @@ public class ExcelReadTest { public void readIssueTest() { //https://gitee.com/dromara/hutool/issues/I5OSFC final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("read.xlsx")); - final List> read = reader.read(1,2,2); - for (final Map map : read) { + final List> read = reader.read(1,2,2); + for (final Map map : read) { Console.log(map); } //超出lastIndex 抛出相应提示:startRowIndex row index 4 is greater than last row index 2. //而非:Illegal Capacity: -1 try { - final List> readGreaterIndex = reader.read(1,4,4); + final List> readGreaterIndex = reader.read(1,4,4); } catch (final Exception e) { Console.log(e.toString()); } diff --git a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/IssueI8PT9ZTest.java b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/IssueI8PT9ZTest.java index 297213e3f..37ddcb1e7 100644 --- a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/IssueI8PT9ZTest.java +++ b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/reader/IssueI8PT9ZTest.java @@ -16,8 +16,8 @@ public class IssueI8PT9ZTest { @Disabled void readTest() { final ExcelReader reader = ExcelUtil.getReader("d:/test/test.xlsx"); - final List> read = reader.read(2, 4, Integer.MAX_VALUE); - for (final Map stringObjectMap : read) { + final List> read = reader.read(2, 4, Integer.MAX_VALUE); + for (final Map stringObjectMap : read) { Console.log(stringObjectMap); } diff --git a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/writer/TemplateContextTest.java b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/writer/TemplateContextTest.java index b22b36806..def486b64 100644 --- a/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/writer/TemplateContextTest.java +++ b/hutool-poi/src/test/java/org/dromara/hutool/poi/excel/writer/TemplateContextTest.java @@ -12,15 +12,16 @@ package org.dromara.hutool.poi.excel.writer; -import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.poi.excel.ExcelUtil; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class TemplateContextTest { @Test void readTemplate() { - final ExcelWriter writer = ExcelUtil.getWriter("d:/test/template.xlsx"); + final ExcelWriter writer = ExcelUtil.getWriter("template.xlsx"); final TemplateContext templateContext = new TemplateContext(writer.getSheet()); - Console.log(templateContext); + Assertions.assertNotNull(templateContext.getCell("date")); + Assertions.assertNotNull(templateContext.getCell(".month")); } } diff --git a/hutool-poi/src/test/resources/template.xlsx b/hutool-poi/src/test/resources/template.xlsx new file mode 100644 index 000000000..b78abfddc Binary files /dev/null and b/hutool-poi/src/test/resources/template.xlsx differ