From bce3ed8cfae1da18f9b75f70bdc533d9605f49aa Mon Sep 17 00:00:00 2001 From: 林致杰 <1003392067@qq.com> Date: 星期一, 15 八月 2022 23:28:31 +0800 Subject: [PATCH] 修复文本数值问题,增加排序 --- src/main/java/com/ots/project/tool/report/MAQTR/chart/MAQTRChart.java | 53 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ots/project/tool/report/MAQTR/chart/MAQTRChart.java b/src/main/java/com/ots/project/tool/report/MAQTR/chart/MAQTRChart.java index 068f2bc..41f212c 100644 --- a/src/main/java/com/ots/project/tool/report/MAQTR/chart/MAQTRChart.java +++ b/src/main/java/com/ots/project/tool/report/MAQTR/chart/MAQTRChart.java @@ -9,6 +9,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ooxml.POIXMLDocument; import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; @@ -36,7 +37,7 @@ OutputStream os = new FileOutputStream("C:\\Users\\澶уご\\Desktop\\MAQ缁勫埆鎶ュ憡\\鏋梍PAQ_IA_CN2.docx"); XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage("C:\\Users\\澶уご\\Desktop\\MAQ缁勫埆鎶ュ憡\\缁堢銆�0607涓枃鐗堛�慚AQ缁勫埆瀵规瘮鎶ュ憡(1).docx")); - String fileName = "C:\\Users\\澶уご\\Desktop\\MAQ缁勫埆鎶ュ憡\\MAQ缁勫埆瀵煎叆鏁版嵁妯℃澘 (2).xlsx"; + String fileName = "C:\\Users\\澶уご\\Desktop\\MAQ缁勫埆鎶ュ憡\\MAQ缁勫埆瀵煎叆鏁版嵁妯℃澘 -3缁�(1).xlsx"; //鍙樻洿鍥捐〃鏁版嵁 changeMAQTRChart(document,fileName); document.write(os); @@ -54,10 +55,10 @@ */ public static Map<String,Map<Integer,Double>> replaceContent(String fileName){ //骞冲潎鍊奸泦鍚� - Map<String,Map<Integer,Double>> averageMap = new HashMap<>(); + Map<String,Map<Integer,Double>> averageMap = new TreeMap<>(); try { XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(fileName)); - Map<String,Map<Integer,List<Double>>> dataMap = new HashMap<>(); + Map<String,Map<Integer,List<Double>>> dataMap = new TreeMap<>(); for (int i = 0; i < wb.getNumberOfSheets(); i++) { XSSFSheet sheet = wb.getSheetAt(i); String companyName = sheet.getRow(1).getCell(0).getStringCellValue(); @@ -67,7 +68,7 @@ //琛� for (int j = 1; j <= sheet.getLastRowNum(); j++) { XSSFRow row = sheet.getRow(j); - if(row == null){ + if(isEmptyRow(row)){ break; } //鍒� @@ -77,16 +78,27 @@ break; } //涓嶆槸鍒嗘暟 蹇界暐 - switch (cell.getCellType()) { - case STRING: - break; + Double cellValue = null; + try { + switch (cell.getCellType()) { + case STRING: + cellValue = Double.valueOf(cell.getStringCellValue()); + break; + case NUMERIC: + cellValue = cell.getNumericCellValue(); + break; + } + }catch (Exception e){ + log.error("鑾峰彇鍒嗘暟澶辫触,{}"+e.getMessage()); + e.printStackTrace(); } + //褰掔被涓�� if(map.get(k) != null){ - map.get(k).add(cell.getNumericCellValue()); + map.get(k).add(cellValue); }else { List<Double> list = new ArrayList<>(); - list.add(cell.getNumericCellValue()); + list.add(cellValue); map.put(k,list); } } @@ -466,6 +478,29 @@ } /** + * 绌鸿鍒ゆ柇 + * @param row + * @return + */ + public static boolean isEmptyRow(XSSFRow row){ + if(row == null || row.toString().isEmpty()){ + return true; + }else{ + Iterator<Cell> it = row.iterator(); + boolean isEmpty = true; + while (it.hasNext()){ + Cell cell = it.next(); + if(cell.getCellType() != CellType.BLANK){ + isEmpty = false; + break; + } + } + return isEmpty; + } + } + + + /** * 鏇存柊鍥捐〃鐨勫叧鑱� excel * * @param seriesDatas -- Gitblit v1.9.1