EXCEL文件导入相关
程序员文章站
2024-03-21 08:23:58
...
总结一下excel文件上传时对excel文件格式的判定以及根据不同版本的excel创建对应的workbook。直接上代码
package com.mrx.controller;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.IOException;
/**
* @author
* @create 2020-03-17 11:48
*/
@Api(tags = "Excel测试")
@RequestMapping(value = "/api/excel")
@RestController
public class ExcelController {
public void upload(@RequestParam("file") MultipartFile file){
// 判断是否是Excel方法一
isExcel1(file);
// 判断是否是Excel方法二(推荐)
isExcel2(file);
// 创建工作簿
Workbook workbook = getWorkbook(file);
}
/** 通过文件后缀名判断 */
private boolean isExcel1(MultipartFile file) {
String fileName = file.getOriginalFilename();
if ((StringUtils.endsWithIgnoreCase(fileName,".xls")) || (StringUtils.endsWithIgnoreCase(fileName,".xlsx"))){
return true;
}else {
return false;
}
}
/** 使用魔法数字判断 */
private boolean isExcel2(MultipartFile file) {
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(file.getInputStream());
FileMagic fileMagic = FileMagic.valueOf(bis);
if ((fileMagic.equals(FileMagic.OLE2)) || (fileMagic.equals(FileMagic.OOXML))){
return true;
}
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}finally {
if (bis != null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/** 判断excel版本创建不同的workbook */
private Workbook getWorkbook(MultipartFile file) {
Workbook workbook = null;
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(file.getInputStream());
// 判断是否是excel以及判断excel版本
FileMagic fileMagic = FileMagic.valueOf(bis);
//.xls
if (fileMagic.equals(FileMagic.OLE2)) {
workbook = new HSSFWorkbook(bis);
//.xlsx
} else if (fileMagic.equals(FileMagic.OOXML)) {
workbook = new XSSFWorkbook(bis);
}
} catch (IOException e) {
return null;
}finally {
if (bis != null){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (workbook != null){
try {
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return workbook;
}
}
小尾巴~~
只要有积累,就会有进步
上一篇: Linux驱动代码中MODULE_PARM_DESC的作用
下一篇: 导入excel文件