一、需求描述
Excel表格里面大约有20个sheet页,每个sheet页65535条数据,需要读取全部数据,并导入至数据库。
找了好多种方式,EasyExcel比较符合,下面看代码。
二、实现方式 采用EasyExcel框架的doReadAll()方法
1、DemoController
/**
* 导入文件分析
*/
public void importAll()
{
String fileName = "D:\\aa.xlsx";
//读取所有Sheet的数据.每次读完一个Sheet就会调用这个方法
EasyExcel.read(fileName, new EasyExceGeneralDatalListener(empService)).doReadAll();
}
2、EmpService
import java.util.List;
import java.util.Map;
public interface EmpService
{
public void importData(List
3、EmpServiceImpl
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.ruoyi.imp.service.EmpService;
import com.ruoyi.jdbc.util.JDBCDruidUtils;
@Service
public class EmpServiceImpl implements EmpService
{
/*
* 测试用Excel导入超过10w条数据,经过测试发现,使用Mybatis的批量插入速度非常慢,所以这里可以使用 数据分批+JDBC分批插入+事务来继续插入速度会非常快
*/
@Override
public void importData(List
4、EasyExceGeneralDatalListener
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.imp.service.EmpService;
// 事件监听
public class EasyExceGeneralDatalListener extends AnalysisEventListener
三、其他问题
1、所用版本
com.alibaba
easyexcel
2.2.10
2、可能会碰到null的报错,可以检查下poi版本是否冲突,这边用的4.1的版本
如果出现poi-ooxml是4.x版本,poi是3.x 可能会出错