chengqiang 3 年 前
コミット
cb95d84027

+ 32 - 1
src/main/java/com/jeeplus/modules/sg/financial/settlement/service/DonorMaterialService.java

@@ -32,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -56,6 +57,8 @@ public class DonorMaterialService extends CrudService<DonorMaterialMapper, Donor
 
     public static Map<String, CellStyle> styles;
 
+    private static DecimalFormat DF = new DecimalFormat("0");
+
     @Override
     public DonorMaterial get(String id) {
         return super.get(id);
@@ -175,7 +178,7 @@ public class DonorMaterialService extends CrudService<DonorMaterialMapper, Donor
 //                    cell.setCellType(1);
 //                }
 //                String cellTwo = cell.getStringCellValue();
-                String cellTwo = this.getCellValue(cell);
+                String cellTwo = this.getStringCellValue(cell);
                 if (null!=cellTwo  && !"".equals(cellTwo) && !"无".equals(cellTwo)  && !"0".equals(cellTwo)) {
                     donorMaterial.setProjectName(projectName);
                     donorMaterial.setProjectId(projectId);
@@ -287,6 +290,34 @@ public class DonorMaterialService extends CrudService<DonorMaterialMapper, Donor
         return value;
     }
 
+    //处理编号数据被当成数字最终展示成科学计数法
+    public String getStringCellValue(Cell cell){
+        String value = null;
+        if (cell != null) {
+            switch (cell.getCellType()) {
+                case Cell.CELL_TYPE_FORMULA:
+                    // cell.getCellFormula();
+                    try {
+                        value = String.valueOf(cell.getStringCellValue());
+                    } catch (IllegalStateException e) {
+                        cell.setCellType(Cell.CELL_TYPE_STRING);
+                        value = String.valueOf(cell.getStringCellValue());
+                    } catch (NullPointerException e) {
+                        value = "";
+                    }
+                    break;
+                case Cell.CELL_TYPE_NUMERIC:
+                    value = DF.format(cell.getNumericCellValue());
+//                    value = String.valueOf(cell.getNumericCellValue());
+                    break;
+                case Cell.CELL_TYPE_STRING:
+                    value = String.valueOf(cell.getRichStringCellValue());
+                    break;
+            }
+        }
+        return value;
+    }
+
     public boolean isNumeric(String str) {
         Pattern pattern = Pattern.compile("[0-9]*");
         Matcher isNum = pattern.matcher(str);