springboot实现Excel导入功能

添加需要的依赖。

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 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>

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页