博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring动态导入无模板excel
阅读量:3966 次
发布时间:2019-05-24

本文共 2450 字,大约阅读时间需要 8 分钟。

spring动态导入无模板excel

导入maven依赖

com.alibaba
easyexcel
2.1.6

实现层代码

@Overridepublic void importExcelUserInfo(MultipartFile file, Long signupId) throws Exception {    this.signupId=signupId;    File tofile = multipartFileToFile(file);    NoModleDataListener noModleDataListener = new NoModleDataListener();    //这里因为出现过地址指向错误,看自己具体需求是否需要    noModleDataListener.setSignupUserinfoService(signupUserinfoService);    //这里调用的是EasyExcel自带的方法不需要自己写    EasyExcel.read(tofile,noModleDataListener).sheet().doRead();}

excel数据表格解析

package tech.niua.admin.utils;import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.mybatis.logging.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import tech.niua.admin.domain.FormTemplate;import tech.niua.admin.domain.SignupUserinfo;import tech.niua.admin.service.IFormTemplateService;import tech.niua.admin.service.ISignupUserinfoService;import javax.annotation.PostConstruct;import java.util.ArrayList;import java.util.List;import java.util.Map;@Slf4jpublic class NoModleDataListener extends AnalysisEventListener
> { private ISignupUserinfoService signupUserinfoService; public ISignupUserinfoService getSignupUserinfoService() { return signupUserinfoService; } public void setSignupUserinfoService(ISignupUserinfoService signupUserinfoService) { this.signupUserinfoService = signupUserinfoService; } //上面的代码根据自己的需求需要修改 /** * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 5; List
> list = new ArrayList
>(); @Override public void invoke(Map
data, AnalysisContext context) { log.info("解析到一条数据:{}", JSON.toJSONString(data)); list.add(data); if (list.size() >= BATCH_COUNT) { saveData(); list.clear(); } } @Override public void invokeHeadMap(Map
headMap, AnalysisContext context) { log.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); list.add(headMap); } @Override public void doAfterAllAnalysed(AnalysisContext context) { saveData(); log.info("所有数据解析完成!"); } /** * 加上存储数据库 */ private void saveData() { log.info("{}条数据,开始存储数据库!", list.size()); log.info("{}输出list!!!",list); //注意这里调用自己的保存方法 signupUserinfoService.saveAll(list); log.info("存储数据库成功!"); }}

转载地址:http://yjyki.baihongyu.com/

你可能感兴趣的文章
Tomcat 7.0 64位免安装解压版 安装及配置
查看>>
Android 网络编程 初级入门(一)
查看>>
No enclosing instance of type Demo06 is accessible.
查看>>
计算机发展中的两大“杀手”
查看>>
《奔跑吧,兄弟》之王祖蓝的"钥匙配箱子"概率统计问题--->>回眸
查看>>
MDK5(Keil for ARM) 工程建立时遇到的问题集锦
查看>>
(正则表达式)邮件地址爬虫
查看>>
c 编译器及#define和typedef
查看>>
Ubuntu下安装GTK+及Glade开发C应用界面
查看>>
Linux下安装eclipse并配置环境变量
查看>>
assertion 'GTK_IS_WIDGET (widget)' failed的解决办法
查看>>
Ubuntu登录管理员账户时,输入密码后一直在登录界面循环
查看>>
Linux下的定时器以及POSIX定时器:timer_settime()
查看>>
POSIX定时器timer_create()以及线程中的gettid() 和pthread_self()
查看>>
c /c++中日期和时间的获取:strftime()函数
查看>>
C语言 回调函数
查看>>
c语言swap(a,b)值交换的4种实现方法
查看>>
c 排序 汇总
查看>>
C 二维数组的动态申请与释放
查看>>
C/C++中产生随机数(rand和srand的用法)
查看>>