EasyExcel实现导入excel
https://blog.csdn.net/rexueqingchun/article/details/91870372
1.pom.xml配置依赖包
- <!-- xls格式excel依赖包 -->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.17</version>
- </dependency>
- <!--xlsx格式excel依赖包-->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.17</version>
- </dependency>
- <!-- easyexcel依赖包 -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>easyexcel</artifactId>
- <version>1.1.2-beat1</version>
- </dependency>
2.编写excel导入对应实体类
- import com.alibaba.excel.annotation.ExcelProperty;
- import com.alibaba.excel.metadata.BaseRowModel;
- public class TestModel extends BaseRowModel {
- @ExcelProperty(value = "姓名", index = 0)
- private String xm;
- @ExcelProperty(value = "微信号", index = 1)
- private String wxh;
- @ExcelProperty(value = "手机号", index = 2)
- private String sjh;
- public String getXm() {
- return xm;
- }
- public void setXm(String xm) {
- this.xm = xm;
- }
- public String getWxh() {
- return wxh;
- }
- public void setWxh(String wxh) {
- this.wxh = wxh;
- }
- public String getSjh() {
- return sjh;
- }
- public void setSjh(String sjh) {
- this.sjh = sjh;
- }
- }
3.编写导入监听类
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- import com.alibaba.excel.context.AnalysisContext;
- import com.alibaba.excel.event.AnalysisEventListener;
- public class ExcelListener extends AnalysisEventListener {
- //自定义用于暂时存储data
- //private List<Object> datas = Collections.synchronizedList(new ArrayList<>());
- private List<Object> datas = new ArrayList<>();
- /**
- * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据
- */
- @Override
- public void invoke(Object o, AnalysisContext analysisContext) {
- datas.add(o);
- }
- /**
- * 读取完之后的操作
- */
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- }
- public List<Object> getDatas() {
- return datas;
- }
- public void setDatas(List<Object> datas) {
- this.datas = datas;
- }
- }
4.编写导入工具类
- import java.io.BufferedInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import org.springframework.web.multipart.MultipartFile;
- import com.alibaba.excel.ExcelReader;
- import com.alibaba.excel.metadata.BaseRowModel;
- import com.alibaba.excel.metadata.Sheet;
- public class EasyExcelUtil {
- /**
- * 读取某个 sheet 的 Excel
- *
- * @param excel 文件
- * @param rowModel 实体类映射,继承 BaseRowModel 类
- * @param sheetNo sheet 的序号 从1开始
- * @return Excel 数据 list
- */
- public static List<Object> readExcel(MultipartFile excel, BaseRowModel rowModel) throws IOException {
- return readExcel(excel, rowModel, 1, 1);
- }
- /**
- * 读取某个 sheet 的 Excel
- * @param excel 文件
- * @param rowModel 实体类映射,继承 BaseRowModel 类
- * @param sheetNo sheet 的序号 从1开始
- * @param headLineNum 表头行数,默认为1
- * @return Excel 数据 list
- */
- public static List<Object> readExcel(MultipartFile excel, BaseRowModel rowModel, int sheetNo, int headLineNum) throws IOException {
- ExcelListener excelListener = new ExcelListener();
- ExcelReader reader = getReader(excel, excelListener);
- if (reader == null) {
- return null;
- }
- reader.read(new Sheet(sheetNo, headLineNum, rowModel.getClass()));
- return excelListener.getDatas();
- }
- /**
- * 读取指定sheetName的Excel(多个 sheet)
- * @param excel 文件
- * @param rowModel 实体类映射,继承 BaseRowModel 类
- * @return Excel 数据 list
- * @throws IOException
- */
- public static List<Object> readExcel(MultipartFile excel, BaseRowModel rowModel,String sheetName) throws IOException {
- ExcelListener excelListener = new ExcelListener();
- ExcelReader reader = getReader(excel, excelListener);
- if (reader == null) {
- return null;
- }
- for (Sheet sheet : reader.getSheets()) {
- if (rowModel != null) {
- sheet.setClazz(rowModel.getClass());
- }
- //读取指定名称的sheet
- if(sheet.getSheetName().contains(sheetName)){
- reader.read(sheet);
- break;
- }
- }
- return excelListener.getDatas();
- }
- /**
- * 返回 ExcelReader
- * @param excel 需要解析的 Excel 文件
- * @param excelListener new ExcelListener()
- * @throws IOException
- */
- private static ExcelReader getReader(MultipartFile excel,ExcelListener excelListener) throws IOException {
- String filename = excel.getOriginalFilename();
- if(filename != null && (filename.toLowerCase().endsWith(".xls") || filename.toLowerCase().endsWith(".xlsx"))){
- InputStream is = new BufferedInputStream(excel.getInputStream());
- return new ExcelReader(is, null, excelListener, false);
- }else{
- return null;
- }
- }
- }
5.业务层调用
- //导入excel
- @RequestMapping(value = "excelImport", method = {RequestMethod.GET, RequestMethod.POST })
- public String excelImport(HttpServletRequest request,Model model,@RequestParam("uploadFile") MultipartFile[] files) throws Exception {
- if(files != null && files.length > 0){
- MultipartFile file = files[0];
- List<Object> list = EasyExcelUtil.readExcel(file, new TestModel(),1,1);
- if(list != null && list.size() > 0){
- for(Object o : list){
- TestModel xfxx = (TestModel) o;
- System.out.println(xfxx.getXm()+"/"+xfxx.getSjh()+"/"+xfxx.getSjh());
- }
- }
- }
- return "index";
- }
EasyExcel实现导入excel的更多相关文章
- springboot批量导入excel数据
1 背景 小白今天闲着没事,在公司摸鱼,以为今天有事无聊的一天,突然上头说小子,今天实现一下批量导入Excel数据吧,当时我的内心是拒绝的,然后默默打开idea. 2 介绍 2.1 框架 java本身 ...
- 使用Layui、Axios、Springboot(Java) 实现EasyExcel的导入导出(浏览器下载)
实现EasyExcel的导入导出(浏览器下载) 实现三个按钮的功能,但是却花费了一天的时间包括总结. 使用到的技术:springboot layui axios EasyExcel mybatis-p ...
- 使用VUE+SpringBoot+EasyExcel 整合导入导出数据
使用VUE+SpringBoot+EasyExcel 整合导入导出数据 创建一个普通的maven项目即可 项目目录结构 1 前端 存放在resources/static 下 index.html &l ...
- 一步步实现ABAP后台导入EXCEL到数据库【3】
在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- IE8下导入EXCEL数据传到客户端以附件下载
IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...
- java的poi技术读取和导入Excel
项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html 用到的Excel文件: http://www.cnblogs.com/h ...
- 报表工具如何实现多次导入Excel
很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...
随机推荐
- IDAE快捷键与设置
以前做项目的时候都是用Eclispe,来到新的公司发现IDE用的是IDEA集成开发工具,以前也用过IDEA,只是略懂略懂,以后你会发现,当你用IDEA的快捷键的时候,会6的飞起 1.IDEA常用快捷键 ...
- Node.js文档-模块
核心模块 Node为Javascript提供了很多服务器级别的API,绝大多数都被包装到了一个具名的核心模块中,例如文件操作的fs核心模块,http服务构建的http模块等,核心模块的使用必须通过re ...
- Java操作RocketMQ
第一步:导入依赖 <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>ro ...
- PostgreSQL内核学习笔记四(SQL引擎)
PostgreSQL实现了SQL Standard2011的大部分内容,SQL处理是数据库中非常复杂的一部分内容. 本文简要介绍了SQL处理的相关内容. 简要介绍 SQL文的处理分为以下几个部分: P ...
- matlab 中 find() 函数用法
一. 功能: 寻找非零元素的索引和值 二.相关函数语法: ind = find(X) ind = find(X, k) ind = find(X, k, 'first') ind = find(X, ...
- ECharts展示后台数据
/** * Created by Administrator on 2015/11/10 010. */ var home = function () { //项目预警分析 var getProAla ...
- MySQL第六课
SELECT [DISTINCT] * /{字段名1,字段名2,字段名3,.........} FROM 表名 [WHERE 条件表达式1] [GROUP BY 字段名[HAVING 条件表达 ...
- (办公)记事本_linux压缩命令
参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show 在Linux中可以识别的常见的压缩格式有十几种,比如&quo ...
- Linux配置安装
1. 安装jdk 1.1 卸载:使用java version查看虚拟机是否有jdk环境,存在先卸载: 1. 首先我的系统是CenOS7,安装完成后,先打开终端,切换到管理员账号,命令如 ...
- 如何在Mac上显示和查看隐藏的文件/文件夹
今天的文章推出的是如何在Mac上显示和查看隐藏的文件/文件夹.出于隐私或安全性考虑,出于多种原因,我们需要在Mac计算机上隐藏某些文件.这些文件或文件夹在默认情况下是为Mac的平稳运行而隐藏的,但是如 ...