From 947ab1a7ccd135e2918b4642e019d6d717b8339e Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Wed, 28 Jun 2023 15:39:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96excel=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nuclear/controller/UploadController.java | 1 + .../com/iflytop/nuclear/service/UploadService.java | 1 + .../nuclear/service/impl/UploadServiceImpl.java | 36 +++++ .../java/com/iflytop/nuclear/utils/ExcelUtils.java | 162 --------------------- src/main/resources/public/a.xlsx | Bin 18053 -> 0 bytes uploadfiles/xlsx/20230628/堆芯模版.xlsx | Bin 12768 -> 12785 bytes 6 files changed, 38 insertions(+), 162 deletions(-) delete mode 100644 src/main/java/com/iflytop/nuclear/utils/ExcelUtils.java delete mode 100644 src/main/resources/public/a.xlsx diff --git a/src/main/java/com/iflytop/nuclear/controller/UploadController.java b/src/main/java/com/iflytop/nuclear/controller/UploadController.java index efa36bc..c013534 100644 --- a/src/main/java/com/iflytop/nuclear/controller/UploadController.java +++ b/src/main/java/com/iflytop/nuclear/controller/UploadController.java @@ -39,6 +39,7 @@ public class UploadController { if (!isValid) { return ResponseData.fail("上传文件内容未按照标准版式排版"); } + Long saveId = uploadService.saveFileContentToDB(file); // 获取文件原本的名字 String originName = file.getOriginalFilename(); // 判断文件是否是pdf文件 diff --git a/src/main/java/com/iflytop/nuclear/service/UploadService.java b/src/main/java/com/iflytop/nuclear/service/UploadService.java index 90e79e9..5405405 100644 --- a/src/main/java/com/iflytop/nuclear/service/UploadService.java +++ b/src/main/java/com/iflytop/nuclear/service/UploadService.java @@ -13,4 +13,5 @@ import java.io.IOException; public interface UploadService { boolean verifyFileFormat(MultipartFile file) throws IOException; + Long saveFileContentToDB(MultipartFile file) throws IOException; } diff --git a/src/main/java/com/iflytop/nuclear/service/impl/UploadServiceImpl.java b/src/main/java/com/iflytop/nuclear/service/impl/UploadServiceImpl.java index fbffbcc..f37cf8f 100644 --- a/src/main/java/com/iflytop/nuclear/service/impl/UploadServiceImpl.java +++ b/src/main/java/com/iflytop/nuclear/service/impl/UploadServiceImpl.java @@ -1,6 +1,8 @@ package com.iflytop.nuclear.service.impl; import com.iflytop.nuclear.service.UploadService; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -9,6 +11,8 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; /** * @author cool @@ -35,4 +39,36 @@ public class UploadServiceImpl implements UploadService { } return false; } + + @Override + public Long saveFileContentToDB(MultipartFile file) throws IOException { + InputStream inputStream = file.getInputStream(); + Workbook wb = new XSSFWorkbook(inputStream); + Sheet sheet = wb.getSheetAt(0); + int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); + int physicalNumberOfColumns = sheet.getRow(1).getPhysicalNumberOfCells(); + // 通过传递参数获取当前excel所处的taskid并存储 + List result = new ArrayList<>(); + for (int r = 2; r < physicalNumberOfRows; r += 3) { + List> list = new ArrayList<>(); + // 一次性对三行数据进行汇总并创建存储对象 + for(int f = r; f < r + 3; f++){ + List line = new ArrayList<>(); + Row row = sheet.getRow(f); + for(int c = 1; c < physicalNumberOfColumns; c++) { + Cell cell = row.getCell(c); + if (null != cell) { + String stringCellValue = cell.getStringCellValue(); + line.add(stringCellValue); + } + } + list.add(line); + } + result.add((ArrayList) list); + } + System.out.println(result); + // 对result进行遍历组合成每条数据 插入数据库中 + + return null; + } } diff --git a/src/main/java/com/iflytop/nuclear/utils/ExcelUtils.java b/src/main/java/com/iflytop/nuclear/utils/ExcelUtils.java deleted file mode 100644 index b736032..0000000 --- a/src/main/java/com/iflytop/nuclear/utils/ExcelUtils.java +++ /dev/null @@ -1,162 +0,0 @@ -// package com.iflytop.nuclear.utils; -// -// import com.iflytop.nuclear.model.NuclearCoreConfig; -// import org.apache.poi.hssf.usermodel.HSSFCell; -// import org.apache.poi.hssf.usermodel.HSSFWorkbook; -// import org.apache.poi.ss.usermodel.*; -// import org.apache.poi.xssf.usermodel.XSSFWorkbook; -// import org.springframework.web.multipart.MultipartFile; -// -// import java.io.IOException; -// import java.io.InputStream; -// import java.text.DecimalFormat; -// import java.time.LocalDate; -// import java.time.LocalDateTime; -// import java.time.format.DateTimeFormatter; -// import java.util.ArrayList; -// import java.util.List; -// -// /** -// * @author xjt -// * @version 1.0 -// */ -// public class ExcelUtils { -// //总行数 -// private static int totalRows = 0; -// //总条数 -// private static int totalCells = 0; -// //错误信息接收器 -// private static String errorMsg; -// -// /** -// * 读EXCEL文件,获取信息集合 -// * @return -// */ -// public static List getExcelInfo(MultipartFile mFile) { -// String fileName = mFile.getOriginalFilename();//获取文件名 -// try { -// if (!validateExcel(fileName)) {// 验证文件名是否合格 -// return null; -// } -// boolean isExcel2003 = true;// 根据文件名判断文件是2003版本还是2007版本 -// if (isExcel2007(fileName)) { -// isExcel2003 = false; -// } -// List userList = createExcel(mFile.getInputStream(), isExcel2003); -// return userList; -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// /** -// * 根据excel里面的内容读取客户信息 -// * @param is 输入流 -// * @param isExcel2003 excel是2003还是2007版本 -// * @return -// * @throws IOException -// */ -// public static List createExcel(InputStream is, boolean isExcel2003) { -// try{ -// Workbook wb = null; -// if (isExcel2003) {// 当excel是2003时,创建excel2003 -// wb = new HSSFWorkbook(is); -// } else {// 当excel是2007时,创建excel2007 -// wb = new XSSFWorkbook(is); -// } -// List userList = readExcelValue(wb);// 读取Excel里面客户的信息 -// return userList; -// } catch (IOException e) { -// e.printStackTrace(); -// } -// return null; -// } -// /** -// * 读取Excel里面客户的信息 -// * @param wb -// * @return -// */ -// private static List readExcelValue(Workbook wb) { -// //默认会跳过第一行标题 -// // 得到第一个shell -// Sheet sheet = wb.getSheetAt(0); -// // 得到Excel的行数 -// totalRows = sheet.getPhysicalNumberOfRows(); -// // 得到Excel的列数(前提是有行数) -// if (totalRows > 1 && sheet.getRow(0) != null) { -// totalCells = sheet.getRow(0).getPhysicalNumberOfCells(); -// } -// List userList = new ArrayList(); -// // 循环Excel行数 -// for (int r = 1; r < totalRows; r++) { -// Row row = sheet.getRow(r); -// if (row == null){ -// continue; -// } -// BuiPatientInfo user = new BuiPatientInfo(); -// // 循环Excel的列 -// for (int c = 0; c < totalCells-1; c++) { -// Cell cell = row.getCell(c); -// if (null != cell) { -// if (c == 0) { //第一列 -// //如果是纯数字,将单元格类型转为String -// if(cell.getCellTypeEnum() == CellType.NUMERIC){ -// cell.setCellType(CellType.STRING); -// } -// user.setPatientName(cell.getStringCellValue());//将单元格数据赋值给user -// } -// else if (c == 1){ -// if(cell.getCellTypeEnum() == CellType.NUMERIC){ -// cell.setCellType(CellType.STRING); -// } -// user.setPatientIdentity(cell.getStringCellValue()); -// } -// else if (c == 2){ -// if(cell.getCellTypeEnum() == CellType.NUMERIC){ -// cell.setCellType(CellType.STRING); -// } -// String stringCellValue = cell.getStringCellValue(); -// user.setHealingId(stringCellValue); -// } -// else if (c == 3){ -// if(cell.getCellTypeEnum() == CellType.NUMERIC){ -// cell.setCellType(CellType.STRING); -// } -// user.setElseInfo(String.valueOf(cell.getStringCellValue())); -// } -// } -// } -// //将excel解析出来的数据赋值给对象添加到list中 -// user.setUpdateTime(LocalDateTime.now()); -// user.setPatientBirthdate(IdentityUtil.getPatientBirth(user.getPatientIdentity())); //拿到身份中好通过已经写好的通过身份证信息获取出生年月工具类 -// user.setPatientSex(IdentityUtil.getPatientSex(user.getPatientIdentity())); //通过省份证号,获取男女信息工具类 -// user.setPatientState(1); //当前实体类字段是固定的,不是excel数据中的。每个对象都可以再遍历完后增加固定属性值 -// user.setCreateId(2L); -// user.setCreateTime(LocalDateTime.now()); -// // 添加到list -// userList.add(user); -// } -// return userList; -// } -// /** -// * 验证EXCEL文件 -// * -// * @param filePath -// * @return -// */ -// public static boolean validateExcel(String filePath) { -// if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) { -// errorMsg = "文件名不是excel格式"; -// return false; -// } -// return true; -// } -// // @描述:是否是2003的excel,返回true是2003 -// public static boolean isExcel2003(String filePath) { -// return filePath.matches("^.+\\.(?i)(xls)$"); -// } -// //@描述:是否是2007的excel,返回true是2007 -// public static boolean isExcel2007(String filePath) { -// return filePath.matches("^.+\\.(?i)(xlsx)$"); -// } -// } diff --git a/src/main/resources/public/a.xlsx b/src/main/resources/public/a.xlsx deleted file mode 100644 index 200b98c853a90b5faf7a02036a65e3be82954d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18053 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 diff --git a/uploadfiles/xlsx/20230628/堆芯模版.xlsx b/uploadfiles/xlsx/20230628/堆芯模版.xlsx index 3c6cbc0b99eaa36761179ed09e90925b01e8c27d..652af5e887fd136fa8a500845afdd3a32bd7b16d 100644 GIT binary patch delta 4091 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