一、引入maven依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
二、controller层
@RequestMapping(value = "/importWorkExcel", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
public void importWorkExcel(@RequestParam("excel") MultipartFile multipartFile) throws BusinessException,IOException, ParseException {
workSpotService.importWorkExcel(multipartFile);
}
三、serviceImpl层
@Override
public void importWorkExcel(MultipartFile file) throws IOException, ParseException {
checkFile(file);
Workbook workbook = getWorkBook(file);
if(workbook != null){
for(int sheetNum = 0;sheetNum < workbook.getNumberOfSheets();sheetNum++){
Sheet sheet = workbook.getSheetAt(sheetNum);
if(sheet == null){
continue;
}
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum();
for(int rowNum = firstRowNum+2;rowNum <= lastRowNum;rowNum++){
Row row = sheet.getRow(rowNum);
if(row == null){
continue;
}
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getPhysicalNumberOfCells();
String workName = "";
String leaderName = "";
Integer leaderId = null;
Date startTime = null;
Date endTime = null;
String levelStr = "";
Integer level = null;
String majorStr = "";
Integer major = null;
for(int cellNum = 0; cellNum<row.getLastCellNum();cellNum++){
Cell cell = row.getCell(cellNum);
if(cellNum == 2){
workName = String.valueOf(cell);
}
if(cellNum == 3){
majorStr = String.valueOf(cell);
}
if(cellNum == 7){
leaderName = String.valueOf(cell);
}
if(cellNum == 8){
String time = getCellValueByCell(cell);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
startTime = sdf.parse(time);
}
if(cellNum == 9){
String time = getCellValueByCell(cell);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
endTime = sdf.parse(time);
}
if(cellNum == 13){
levelStr = String.valueOf(cell);
}
}
leaderId = userMapper.getIdByUserName(leaderName);
if(levelStr.contains("一级")){
level = 1;
} else if(levelStr.contains("二级")){
level = 2;
} else if(levelStr.contains("三级")){
level = 3;
} else if(levelStr.contains("四级")){
level = 4;
} else if(levelStr.contains("高风险")){
level = 5;
} else if(levelStr.contains("中风险")){
level = 6;
} else if(levelStr.contains("低风险")){
level = 7;
}else if(levelStr.contains("通信A级")){
level = 8;
}else if(levelStr.contains("通信B级")){
level = 9;
}else if(levelStr.contains("通信C级")){
level = 10;
}else {
level = 1;
}
if(majorStr.contains("变电")){
major = 1;
} else if(majorStr.contains("输电")){
major = 2;
} else if(majorStr.contains("配电")){
major = 3;
} else if(majorStr.contains("配农网工程")){
major = 4;
} else if(majorStr.contains("基建")){
major = 5;
} else if(majorStr.contains("外部出资工程")){
major = 6;
} else if(majorStr.contains("充电桩工程")){
major = 7;
} else if(majorStr.contains("营销")){
major = 8;
} else if(majorStr.contains("网络通信")){
major = 9;
} else if(majorStr.contains("小型基建")){
major = 10;
}
WorkSpot workSpot = new WorkSpot();
workSpot.setName(workName);
workSpot.setProName("");
workSpot.setLeaderId(leaderId);
workSpot.setScheduleStartDate(startTime);
workSpot.setScheduleEndDate(endTime);
workSpot.setLevel(level);
workSpot.setState(1);
workSpot.setCreateUserId(UserUtil.getUserId());
workSpot.setCreateTime(new Date());
workSpotMapper.insert(workSpot);
}
}
}
}
public static Workbook getWorkBook(MultipartFile file){
String fileName = file.getOriginalFilename();
Workbook workbook = null;
try {
InputStream is = file.getInputStream();
if (fileName.endsWith("xls")) {
workbook = new HSSFWorkbook(is);
} else if (fileName.endsWith("xlsx")) {
workbook = new XSSFWorkbook(is);
}
} catch (IOException e) {
e.printStackTrace();
}
return workbook;
}
public static void checkFile(MultipartFile file)throws IOException{
if(null == file){
System.out.println("文件不存在");
throw new FileNotFoundException("文件不存在!");
}
String fileName = file.getOriginalFilename();
if(!fileName.endsWith("xls") && !fileName.endsWith("xlsx")){
System.out.println(fileName+"不是Excel文件!");
throw new IOException(fileName+"不是Excel文件!");
}
}
public static File MultipartFileToFile(MultipartFile multiFile) {
String fileName = multiFile.getOriginalFilename();
String prefix = fileName.substring(fileName.lastIndexOf("."));
try {
File file = File.createTempFile(fileName, prefix);
multiFile.transferTo(file);
return file;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String getCellValueByCell(Cell cell) {
if (cell==null || cell.toString().trim().equals("")) {
return "";
}
String cellValue = "";
int cellType=cell.getCellType();
switch (cellType) {
case Cell.CELL_TYPE_NUMERIC:
short format = cell.getCellStyle().getDataFormat();
if (DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = null;
if (format == 20 || format == 32) {
sdf = new SimpleDateFormat("HH:mm");
} else if (format == 14 || format == 31 || format == 57 || format == 58) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
double value = cell.getNumericCellValue();
Date date = org.apache.poi.ss.usermodel.DateUtil
.getJavaDate(value);
cellValue = sdf.format(date);
}else {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
try {
cellValue = sdf.format(cell.getDateCellValue());
} catch (Exception e) {
try {
throw new Exception("exception on get date data !".concat(e.toString()));
} catch (Exception e1) {
e1.printStackTrace();
}
}finally{
sdf = null;
}
} else {
BigDecimal bd = new BigDecimal(cell.getNumericCellValue());
cellValue = bd.toPlainString();
}
break;
case Cell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN:
cellValue = cell.getBooleanCellValue()+"";;
break;
case Cell.CELL_TYPE_FORMULA:
cellValue = cell.getCellFormula();
break;
case Cell.CELL_TYPE_BLANK:
cellValue = "";
break;
case Cell.CELL_TYPE_ERROR:
cellValue = "ERROR VALUE";
break;
default:
cellValue = "UNKNOW VALUE";
break;
}
return cellValue;
}