一、pom.xml
导入两个依赖,如下:
<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("/uploadExcelFile")
@ResponseBody
public String uploadExcelFile(MultipartFile excelFile) throws Exception {
if(excelFile.isEmpty()){
return "error";
}else {
String fileName = excelFile.getOriginalFilename();//获取文件名
InputStream in = excelFile.getInputStream();//获取文件输入流
if(choiceService.insertChoice(in, fileName)){
return "success";
}else {
return "error";
}
}
}
三、Service层
public boolean insertChoice(InputStream excelFile,String fileName) throws Exception {
boolean flag = true;
//创建Excel工作薄
Workbook workbook = this.getWorkbook(excelFile,fileName);
……略,自由发挥部分
//获取到了workbook后就可以在这干你想干的事了
//Sheet sheet = workbook.getSheetAt(i);获取第i个sheet
//sheet.getFirstRowNum()
//sheet.getLastRowNum()
//Row row = sheet.getRow(i)获取sheet中的第i行
//Workbook、Sheet、Row、Cell的一些方法可以百度一下
……
return flag;
}
/**
* 判断文件格式.xls/.xlsx
* @param in
* @param fileName
* @return
* @throws Exception
*/
public Workbook getWorkbook(InputStream in, String fileName) throws Exception {
Workbook workbook = null;
String fileType = fileName.substring(fileName.lastIndexOf("."));
if(".xls".equals(fileType)){
workbook = new HSSFWorkbook(in);
}else if(".xlsx".equals(fileType)){
workbook = new XSSFWorkbook(in);
}else {
throw new Exception("请上传.xls/.xlsx格式文件!");
}
return workbook;
}
四、前端
html部分
<div class="col-md-4 text-right">
<input id="upload" name="excelFile" type="file" style="display: none;" accept=".xls,.xlsx" onchange="whenInputChange()" />
<button onclick="upload()">导入</button>
</div>
Js/jq部分
function upload() {
$("#upload").click();
}
function whenInputChange() {
var excelFile = $("#upload").get(0).files[0];
var dataForm = new FormData();
dataForm.append("excelFile",excelFile);
$.ajax({
type:"post",
url:"/uploadExcelFile",
data:dataForm,
processData:false,
contentType:false,
async:false,
success:function (data) {
if(data == "success"){
alert("成功");
}else{
alert("失败");
}
},
error:function () {
popupBox('系统出现问题');
}
})
}
结语:SpringBoot获取Excel文件的过程大致就这样。有不正确之处请指教。