From 64e9354dbec8dfd3dec9713fc8ce85e6e5169d61 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 21 Apr 2022 13:41:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=B2=BE=E7=AE=80=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Excel=E6=95=B0=E6=8D=AE=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/commons/utils/ExcelXlsReader.java | 12 +++++++++++- .../dataease/commons/utils/ExcelXlsxReader.java | 15 ++++++++++++--- .../service/dataset/DataSetTableService.java | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsReader.java b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsReader.java index c516c977e4..8b96412235 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsReader.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsReader.java @@ -25,6 +25,16 @@ public class ExcelXlsReader implements HSSFListener { private int minColums = -1; + public Integer getObtainedNum() { + return obtainedNum; + } + + public void setObtainedNum(Integer obtainedNum) { + this.obtainedNum = obtainedNum; + } + + private Integer obtainedNum = null; + private POIFSFileSystem fs; /** @@ -331,7 +341,7 @@ public class ExcelXlsReader implements HSSFListener { totalSheets.add(excelSheetData); }else { List tmp = new ArrayList<>(cellList); - if(totalSheets.stream().filter(s->s.getExcelLable().equalsIgnoreCase(sheetName)).collect(Collectors.toList()).get(0).getData().size() < 100){ + if(obtainedNum != null && totalSheets.stream().filter(s->s.getExcelLable().equalsIgnoreCase(sheetName)).collect(Collectors.toList()).get(0).getData().size() < obtainedNum){ totalSheets.stream().filter(s->s.getExcelLable().equalsIgnoreCase(sheetName)).collect(Collectors.toList()).get(0).getData().add(tmp); } diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java index e33d1fee67..2dd264335c 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java @@ -121,6 +121,15 @@ public class ExcelXlsxReader extends DefaultHandler { */ private boolean isDateFormat = false; + public Integer getObtainedNum() { + return obtainedNum; + } + + public void setObtainedNum(Integer obtainedNum) { + this.obtainedNum = obtainedNum; + } + + private Integer obtainedNum = null; public List getFields() { return fields; @@ -181,7 +190,7 @@ public class ExcelXlsxReader extends DefaultHandler { */ @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { - if(curRow>101){ + if(this.obtainedNum !=null && curRow>this.obtainedNum){ return; } @@ -219,7 +228,7 @@ public class ExcelXlsxReader extends DefaultHandler { */ @Override public void characters(char[] ch, int start, int length) throws SAXException { - if(curRow>101){ + if(this.obtainedNum !=null && curRow>this.obtainedNum){ return; } lastIndex += new String(ch, start, length); @@ -235,7 +244,7 @@ public class ExcelXlsxReader extends DefaultHandler { */ @Override public void endElement(String uri, String localName, String name) throws SAXException { - if(curRow>101){ + if(this.obtainedNum !=null && curRow>this.obtainedNum){ return; } //t元素也包含字符串 diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 97fe038802..d819248b01 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1917,11 +1917,13 @@ public class DataSetTableService { String suffix = filename.substring(filename.lastIndexOf(".") + 1); if (StringUtils.equalsIgnoreCase(suffix, "xls")) { ExcelXlsReader excelXlsReader = new ExcelXlsReader(); + excelXlsReader.setObtainedNum(100); excelXlsReader.process(inputStream); excelSheetDataList = excelXlsReader.totalSheets; } if (StringUtils.equalsIgnoreCase(suffix, "xlsx")) { ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader(); + excelXlsxReader.setObtainedNum(100); excelXlsxReader.process(inputStream); excelSheetDataList = excelXlsxReader.totalSheets; }