1、新建一個springBoot項目
pom.xml依賴配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2溜歪、數(shù)據(jù)庫配置
#mysql配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://47.92.245.9:3306/peo-test?&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=Btkx1234!
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.show-sql=true
spring.jpa.show-sql=true
#druid 數(shù)據(jù)源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#編碼格式設置
spring.thymeleaf.encoding=UTF-8
3、配置靜態(tài)頁面
在項目的resources/templates/excelImport.html下
頁面內容:
<!DOCTYPE html>
<html lang="en">
<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>
4脖含、DAO層
import com.java.excel.Entity.Excel;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ExcelDaoextends JpaRepository {
}
5、service層
@Service
//事務控制
@Transactional
public class ExcelService {
@Autowired
private ExcelDaoexcelDao;
public void saveExcel(MultipartFile file)throws IOException {
//根據(jù)路徑獲取這個操作excel的實例
//? ? ? HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());
? ? ? ? XSSFWorkbook work =new XSSFWorkbook(file.getInputStream());
//根據(jù)頁面index 獲取sheet頁
//? ? ? HSSFSheet sheet = wb.getSheetAt(0);
? ? ? ? XSSFSheet sheet = work.getSheetAt(0);
//? ? ? ? HSSFSheet 和XSSFSheet 是有區(qū)別的投蝉,自行百度
? ? ? ? ?XSSFRow row =null;//接受每一行的數(shù)據(jù)????
? ??????for (int i =1; i < sheet.getPhysicalNumberOfRows(); i++) {
? ? ? ? ? ? ?//獲取每一行數(shù)據(jù)
? ? ? ? ? ? ?row = sheet.getRow(i);
? ? ? ? ? ? //要判斷每一行數(shù)據(jù)是否為空养葵,此處沒寫,自行百度
? ? ? ? ? ? ?row.getCell(0);//拿到每一列
? ? ? ? ? ? //拿到每一列后放入對應的實體中瘩缆,新增
????????}
}
6关拒、controller層
@Controller
public class ExcelController {
????@Autowired
? ? private ExcelServiceexcelService;
? ??@GetMapping("/toHtml")
????public String test(HttpServletRequest request) {
????????return "excelImport";
????}
????//處理文件上傳
????@ResponseBody//返回json數(shù)據(jù)
????@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 {
????????excelService.saveExcel(file);
????}catch (Exception e) {
????????e.printStackTrace();
????}
????????return "導入成功!";
????}
}