瀏覽代碼

代码重构

tom.xu@informa.com 2 年之前
父節點
當前提交
a01cd6368b
共有 1 個文件被更改,包括 29 次插入25 次删除
  1. 29 25
      src/main/java/ieven/server/webapp/api/FileController.java

+ 29 - 25
src/main/java/ieven/server/webapp/api/FileController.java

@@ -1,5 +1,6 @@
 package ieven.server.webapp.api;
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.poi.excel.ExcelReader;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.mongodb.client.gridfs.model.GridFSFile;
@@ -57,38 +58,41 @@ public class FileController {
   public Mapped uploadSingle(@RequestParam MultipartFile file, @RequestParam String modelId)
       throws IOException {
     String filename = file.getOriginalFilename();
+    String extName = FileUtil.extName(filename);
     String contentType = file.getContentType();
     ByteArrayOutputStream baos = cloneInputStream(file.getInputStream());
-    ExcelReader reader = ExcelUtil.getReader(new ByteArrayInputStream(baos.toByteArray()));
-    List<Sheet> sheets = reader.getSheets();
-    List<String> headers = new ArrayList<>();
-    for (Sheet sheet : sheets) {
-      reader.setSheet(sheet);
-      List<Object> objects = reader.readRow(0);
-      if (objects.size() > 1) { // 至少大于1
-        StringBuilder stringBuilder = new StringBuilder();
-        for (Object object : objects) {
-          stringBuilder.append(object);
+    if (extName.equalsIgnoreCase("xls") || extName.equalsIgnoreCase("xlsx")) {
+      ExcelReader reader = ExcelUtil.getReader(new ByteArrayInputStream(baos.toByteArray()));
+      List<Sheet> sheets = reader.getSheets();
+      List<String> headers = new ArrayList<>();
+      for (Sheet sheet : sheets) {
+        reader.setSheet(sheet);
+        List<Object> objects = reader.readRow(0);
+        if (objects.size() > 1) { // 至少大于1
+          StringBuilder stringBuilder = new StringBuilder();
+          for (Object object : objects) {
+            stringBuilder.append(object);
+          }
+          headers.add(stringBuilder.toString());
         }
-        headers.add(stringBuilder.toString());
       }
-    }
-    if (headers.size() > 1) {
-      // 判断sheet第一行内容是否一致
-      StringBuilder errorHeaders = new StringBuilder();
-      String baseHeader = headers.get(0);
-      for (int i = 0; i < headers.size(); i++) {
-        //
-        if (i == 0) {
-          continue;
+      if (headers.size() > 1) {
+        // 判断sheet第一行内容是否一致
+        StringBuilder errorHeaders = new StringBuilder();
+        String baseHeader = headers.get(0);
+        for (int i = 0; i < headers.size(); i++) {
+          //
+          if (i == 0) {
+            continue;
+          }
+          if (!headers.get(i).equals(baseHeader)) {
+            errorHeaders.append("sheet").append(i).append("标题列与第一个sheet不一致!");
+          }
         }
-        if (!headers.get(i).equals(baseHeader)) {
-          errorHeaders.append("sheet").append(i).append("标题列与第一个sheet不一致!");
+        if (errorHeaders.length() > 0) {
+          return Mapped.ERROR(errorHeaders.toString());
         }
       }
-      if (errorHeaders.length() > 0) {
-        return Mapped.ERROR(errorHeaders.toString());
-      }
     }
     return this.fileService.storeUploaded(
         new ByteArrayInputStream(baos.toByteArray()), filename, contentType, modelId);