7 changed files with 251 additions and 7 deletions
-
15pom.xml
-
27src/main/java/com/iflytop/nuclear/controller/UploadController.java
-
16src/main/java/com/iflytop/nuclear/service/UploadService.java
-
38src/main/java/com/iflytop/nuclear/service/impl/UploadServiceImpl.java
-
162src/main/java/com/iflytop/nuclear/utils/ExcelUtils.java
-
BINsrc/main/resources/public/a.xlsx
-
BINuploadfiles/xlsx/20230628/堆芯模版.xlsx
@ -0,0 +1,16 @@ |
|||||
|
package com.iflytop.nuclear.service; |
||||
|
|
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.web.multipart.MultipartFile; |
||||
|
|
||||
|
import java.io.IOException; |
||||
|
|
||||
|
/** |
||||
|
* @author cool |
||||
|
* @date 2023/6/28 14:20 |
||||
|
*/ |
||||
|
@Transactional |
||||
|
public interface UploadService { |
||||
|
boolean verifyFileFormat(MultipartFile file) throws IOException; |
||||
|
|
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
package com.iflytop.nuclear.service.impl; |
||||
|
|
||||
|
import com.iflytop.nuclear.service.UploadService; |
||||
|
import org.apache.poi.ss.usermodel.Sheet; |
||||
|
import org.apache.poi.ss.usermodel.Workbook; |
||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.web.multipart.MultipartFile; |
||||
|
|
||||
|
import java.io.IOException; |
||||
|
import java.io.InputStream; |
||||
|
|
||||
|
/** |
||||
|
* @author cool |
||||
|
* @date 2023/6/28 14:21 |
||||
|
*/ |
||||
|
@Service |
||||
|
public class UploadServiceImpl implements UploadService { |
||||
|
@Override |
||||
|
public boolean verifyFileFormat(MultipartFile file) throws IOException { |
||||
|
InputStream inputStream = file.getInputStream(); |
||||
|
Workbook wb = new XSSFWorkbook(inputStream); |
||||
|
//默认会跳过第一行标题 |
||||
|
// 得到第一个shell |
||||
|
Sheet sheet = wb.getSheetAt(0); |
||||
|
// 得到Excel的行数 |
||||
|
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); |
||||
|
int totalCells = 0; |
||||
|
// 得到Excel的列数(前提是有行数) |
||||
|
if (physicalNumberOfRows > 1 && sheet.getRow(1) != null) { |
||||
|
totalCells = sheet.getRow(1).getPhysicalNumberOfCells(); |
||||
|
} |
||||
|
if (physicalNumberOfRows == 41 && totalCells == 14) { |
||||
|
return true; |
||||
|
} |
||||
|
return false; |
||||
|
} |
||||
|
} |
@ -0,0 +1,162 @@ |
|||||
|
// 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<NuclearCoreConfig> getExcelInfo(MultipartFile mFile) { |
||||
|
// String fileName = mFile.getOriginalFilename();//获取文件名 |
||||
|
// try { |
||||
|
// if (!validateExcel(fileName)) {// 验证文件名是否合格 |
||||
|
// return null; |
||||
|
// } |
||||
|
// boolean isExcel2003 = true;// 根据文件名判断文件是2003版本还是2007版本 |
||||
|
// if (isExcel2007(fileName)) { |
||||
|
// isExcel2003 = false; |
||||
|
// } |
||||
|
// List<NuclearCoreConfig> 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<NuclearCoreConfig> 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<NuclearCoreConfig> userList = readExcelValue(wb);// 读取Excel里面客户的信息 |
||||
|
// return userList; |
||||
|
// } catch (IOException e) { |
||||
|
// e.printStackTrace(); |
||||
|
// } |
||||
|
// return null; |
||||
|
// } |
||||
|
// /** |
||||
|
// * 读取Excel里面客户的信息 |
||||
|
// * @param wb |
||||
|
// * @return |
||||
|
// */ |
||||
|
// private static List<NuclearCoreConfig> 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<BuiPatientInfo> userList = new ArrayList<BuiPatientInfo>(); |
||||
|
// // 循环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)$"); |
||||
|
// } |
||||
|
// } |
Write
Preview
Loading…
Cancel
Save
Reference in new issue