From 8688bfa3bba72f0e89520014a67454493b25e416 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期四, 20 三月 2025 10:46:54 +0800
Subject: [PATCH] Merge branch 'master' of http://dlindusit.com:53929/r/iailab-plat

---
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/Readtxt.java |   66 ++++++++++++++++++++------------
 1 files changed, 41 insertions(+), 25 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/Readtxt.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/Readtxt.java
index fd3e96e..6efe3b1 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/Readtxt.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/common/utils/Readtxt.java
@@ -1,8 +1,8 @@
 package com.iailab.module.model.mpk.common.utils;
 
 
+import com.iailab.module.model.common.utils.ASCIIUtil;
 import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
@@ -110,32 +110,48 @@
     }
 
     public static List<double[][]> readMethodExcel(MultipartFile file) throws IOException {
-        Workbook workbook = WorkbookFactory.create(file.getInputStream());
-        //获取工作薄里面sheet的个数
-        int sheetNum = workbook.getNumberOfSheets();
-        List<double[][]> datas = new ArrayList<>(sheetNum - 1);
-        //从第二个sheet开始读,第一个为示例
-        for (int i = 1; i < sheetNum; i++) {
-            Sheet sheet = workbook.getSheetAt(i);
-            //获取sheet中有数据的行数
-            int rows = sheet.getPhysicalNumberOfRows();
-            double[][] doubles2 = new double[rows][];
-            for (int j = 0; j < rows; j++) {
-                //获取每一行的数据
-                Row row = sheet.getRow(j);
-                //得到每一行中有效单元格的数据
-                short cells = row.getLastCellNum();
-                //定义一个doubles数组用来存储读取单元格的数据
-                double[] doubles1 = new double[cells];
-                //遍历每一个有效的单元格数据
-                for (int k = 0; k < cells; k++) {
-                    //获取每一个单元格的数据
-                    Cell cell = row.getCell(k, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
-                    doubles1[k] = cell.getNumericCellValue();
+        List<double[][]> datas;
+        try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) {
+            //获取工作薄里面sheet的个数
+            int sheetNum = workbook.getNumberOfSheets();
+            datas = new ArrayList<>(sheetNum - 1);
+            //从第二个sheet开始读,第一个为示例
+            for (int i = 1; i < sheetNum; i++) {
+                Sheet sheet = workbook.getSheetAt(i);
+                //获取sheet中有数据的行数
+                int rows = sheet.getPhysicalNumberOfRows();
+                double[][] doubles2 = new double[rows][];
+                for (int j = 0; j < rows; j++) {
+                    //获取每一行的数据
+                    Row row = sheet.getRow(j);
+                    //得到每一行中有效单元格的数据
+                    short cells = row.getLastCellNum();
+                    //定义一个doubles数组用来存储读取单元格的数据
+                    double[] doubles1 = new double[cells];
+                    //遍历每一个有效的单元格数据
+                    for (int k = 0; k < cells; k++) {
+                        //获取每一个单元格的数据
+                        Cell cell = row.getCell(k, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
+                        CellType cellType = cell.getCellType();
+                        if (cellType.equals(CellType.NUMERIC)) {
+                            doubles1[k] = cell.getNumericCellValue();
+                        } else if (cellType.equals(CellType.STRING)) {
+                            // 校验数据格式
+                            if (k != 0) {
+                                throw new RuntimeException();
+                            }
+                            String stringCellValue = cell.getStringCellValue();
+                            doubles1 = ASCIIUtil.stringToAsciiArray(stringCellValue);
+                            break;
+                        }
+
+                    }
+                    doubles2[j] = doubles1;
                 }
-                doubles2[j] = doubles1;
+                datas.add(doubles2);
             }
-            datas.add(doubles2);
+        } catch (Exception e) {
+            throw new RuntimeException("解析Excel异常", e);
         }
 
         return datas;

--
Gitblit v1.9.3