添加需要的依賴。
1、添加web依賴用于前背景的互動,也就是servlet的功能。
這個在建立的時候可以直接選擇就可以。
2、添加POI的依賴用于Excel的操作。
<!--引入poi--><dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency><dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version></dependency>
3、添加視圖解析Thymeleaf實作頁面的展示。
<!--Thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
4、
controller主要分為三部分
1、引入需要的包
2、跳轉到導入頁面的請求
3、Excel導入請求,簡單來說就是上傳+excel讀取
package com.example.excelimport.controller;
import com.example.excelimport.excel.ImportData;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@Controller
public class ExcelImportController {
@GetMapping("/toHtml")
String test(HttpServletRequest request) {
return "excelImport";
}
//處理檔案上傳
@ResponseBody//傳回json資料
@RequestMapping(value = "/excelImport", method = RequestMethod.POST)
public String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
String contentType = file.getContentType();
String fileName = file.getOriginalFilename();
if (file.isEmpty()) {
return "檔案為空!";
}
try {
//根據路徑擷取這個操作excel的執行個體
HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream()); //根據頁面index 擷取sheet頁
HSSFSheet sheet = wb.getSheetAt(0);
//實體類集合
List<ImportData> importDatas = new ArrayList<>();
HSSFRow row = null;
//循環sesheet頁中資料從第二行開始,第一行是标題
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
//擷取每一行資料
row = sheet.getRow(i);
ImportData data = new ImportData();
data.setId(Integer.valueOf((int) row.getCell(0).getNumericCellValue())); data.setName(row.getCell(1).getStringCellValue());
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd"); data.setCreateDate(df.parse(df.format(HSSFDateUtil.getJavaDate(row.getCell(2).getNumericCellValue()))));
data.setAge(Integer.valueOf((int) row.getCell(3).getNumericCellValue())); importDatas.add(data);
}
//循環展示導入的資料,實際應用中應該校驗并存入資料庫
for (ImportData imdata : importDatas) {
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
System.out.println("ID:"+imdata.getId()+" name:"+imdata.getName()+" createDate:"+df.format(imdata.getCreateDate())+" age:"+imdata.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
return "導入成功!";
}
}
前端導入頁面。
1、注意html頁面存放的位置,預設要放excelimport\src\main\resources\templates\excelImport.html
如下圖:
2:具體代碼
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Excel導入</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/excelImport">
選擇Excel表格:<input type="file" name="file"/><br/>
<input type="submit" value="上傳"/>
</form>
</body>
</html>