动态表头excel导入

1. 导入依赖并设置实体

  1. 首先配置poi版本相关的maven属性

    <properties><poi.version>4.1.2</poi.version>
    </properties>
    
  2. 配置文件中使用Apache poi,Alibaba-easyexcel相关的依赖。

    <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version><exclusions><exclusion><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency>
    
  3. 动态读取的表单实体类内容

    @Builder
    @Data
    @TableName("t_form_template")
    public class FormTemplate {@TableId(type = IdType.AUTO)private Long id;//表头名称private String formTitle;//表名private String formName;//是否可为空private Boolean isBlank;//规定的数据类型private String dataType;//规定的字段的长度private String dataNum;private String valueType;//字段默认值private String defaultText;private String defaultPrompt;//字段的排序private String formSort;private String remarks;@ApiModelProperty(value = "创建时间")@TableField(fill = FieldFill.INSERT)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;@TableField(exist=false)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTimeBegin;@TableField(exist=false)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime createTimeEnd;@ApiModelProperty(value = "更新时间")@TableField(fill = FieldFill.INSERT_UPDATE)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")private LocalDateTime updateTime;}

2. 数据解析

  1. 这里使用每10条数据为批次,进行存储数据库操作,实际使用中可以更大批次进行数据处理。
  2. 使用esayExcel的相关函数对数据进行批次解析。
  3. 过程为:解析数据->找到对应字段->对数据进行保存。
    private static final int BATCH_COUNT = 10;List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();@Overridepublic void invoke(Map<Integer, String> data, AnalysisContext context) {log.info("解析到一条数据:{}", JSON.toJSONString(data));list.add(data);if (list.size() >= BATCH_COUNT) {saveData();list.clear();}}@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {log.info("解析到一条头数据:{}", JSON.toJSONString(headMap));list.add(headMap);}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {saveData();log.info("所有数据解析完成!");}

3.存入数据库

  1. 储存操作

     private void saveData() {log.info("{}条数据,开始存储数据库!", list.size());log.info("{}输出list!!!",list);//注意这里调用自己的保存方法signupUserinfoService.saveAll(list);log.info("存储数据库成功!");}
    
  2. 批量保存函数

    1. 原理是对获得的list转为map对象,并且进行循环插入数据库。
        @Overridepublic void saveAll(List<Map<Integer, String>> list) {Map<Integer, String> map = list.get(0);for (int i = 1; i < list.size(); i++) {//行数Map<Integer, String> map1 = list.get(i);int code = refFormUserService.selectMaxCode() + 1;for (int j = 0; j < map.size(); j++) {//列数SignupUserinfo signupUserinfo = new SignupUserinfo();FormTemplate formTemplate = formTemplateService.selectFormTemplate(signupId, map.get(j));log.info("{}j的大小", map.get(j));signupUserinfo.setFormName(formTemplate.getFormName());signupUserinfo.setFormTitle(map.get(j));signupUserinfo.setFormValue(map1.get(j));signupUserinfoService.saveOrUpdate(signupUserinfo);signupUserinfo.setFormId(formTemplate.getId());signupUserinfo.setCode(String.valueOf(code));signupUserinfo.setFormUserId(signupUserinfo.getId());refFormUserService.insertByUserInfo(signupUserinfo);}}}
    

动态表头excel导入(java)相关推荐

  1. 动态表头excel导出(java)

    动态表头excel导出 1. 导入依赖并设置实体 首先配置poi版本相关的maven属性 <properties><poi.version>4.1.2</poi.vers ...

  2. 【飞秋】ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码

    最近闲了,花点几天时间将项目中常用的一些类.方法做了一下总结,希望对大家有用. 实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回fa ...

  3. java 动态表头_java如何生成可变表头的excel

    本文为大家分享了java生成可变表头excel的具体步骤,供大家参考,具体内容如下 1.实现功能: 传入一个表头和数据,将数据导入到excel中. 为了便于项目的扩展,数据传入通过泛型集合传入,获取数 ...

  4. java 动态导入excel_javaweb之动态读取 excel,导入excel

    因为项目需求用到excel导入功能,技术有限花了很多时间终于弄出来了.借鉴了别人的方法,分享给有需要的人. 之前在搜索后看了很多人的方法,但是和我实际的需求不符合. 有什么问题或者改良 可以联系我qq ...

  5. java Excel导入导出工具类 及使用demo

    java Excel导入导出工具类 及使用demo 前言:相信进来的都是想尽快解决问题的,话不多说,按照以下步骤来,可以操作导出excel到本地,导入同理,自行学习.步骤一:直接复制以下excel工具 ...

  6. Java实现Excel导入导出操作详解

    前言 本次封装是基于 POI 的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求. 1. 功能测试 1.1 测试准备 在做测试前,我们需要將[2. 环境准备]中的 ...

  7. Java动态生成excel模板文件(包含列下拉)

    1.添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency><gr ...

  8. Java后端:10w行级别数据的Excel导入优化记录

    一些细节 数据导入:导入使用的模板由系统提供,格式是 xlsx (支持 65535+行数据) ,用户按照表头在对应列写入相应的数据 数据校验:数据校验有两种: 字段长度.字段正则表达式校验等,内存内校 ...

  9. java excel导入校验_excel导入前校验

    问题描述: 遇到客户提出过问题,能否在导入前对导入的excel内容进行校验,满足条件后才能导入到报表中. 解决思路: 在导入excel中首先要将excel的数据读入到报表文件中的excelReport ...

最新文章

  1. Python:urllib2模块Handler处理器 和 自定义Opener
  2. DWZ(J-UI)整合百度编辑器(UEditor)
  3. 程序员会成为非常内卷的职业吗?
  4. 问题记录之用poi生成图片并插入到word时,图片中的中文显示不出来
  5. 怎么在网页中调用netmeeting使用阿?
  6. Silverlight DataGrid超出列表高度时自动滚屏
  7. 怎样让友情链接更加有效果
  8. Android插件化开发基础之Java反射机制研究
  9. ClassNotFoundException:是否减慢了您的JVM?
  10. mysql字段编码转换_mysql字符集编码转换
  11. builtins.TypeError: sequence item 0: expected a bytes-like object, str found
  12. 用Swift完成不同View Controller之间的切换
  13. linux对文件属性及权限操作的一些基本命令
  14. 使用pt-query-digest,找到不是很合适的sql
  15. 全新卡盟系统PHP版 集成易支付_PHP全新授权系统支持盗版入库卡密授权
  16. 英语快照1---英语正能量
  17. 成长计划校园极客秀|基于OpenHarmony的智能阳台
  18. 【UV打印机】RYPC打印软件教程(三)-参数设置
  19. PHP验证身份证类(包含香港身份证校验)
  20. 一款客服系统有哪些必备的功能模块?

热门文章

  1. 09丨数据采集:如何用八爪鱼采集微博上的“DG”评论
  2. sprintf用法(很强大啊)
  3. 在list中插入一个数据
  4. GEE:变异系数法在遥感影像分析中的应用及权重计算
  5. Oracle-SQL中日期加减一年的写法
  6. Microsoft Dynamics AX2012 R2吐槽系列(4)
  7. SLAM总结(一)- SLAM原理概述与简介
  8. 【算法】快速排序算法原理及实现
  9. Python 实现文本共现网络分析
  10. JVM参数详细配置说明