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