|
@@ -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);
|