若依使用easyexcel读取解析excel文件示例

这篇具有很好参考价值的文章主要介绍了若依使用easyexcel读取解析excel文件示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

睿洛医疗

目标:结构化自定义列数和列标题的excel数据。

easyexcel异步读取excel,java,postman,java,eureka

 easyexcel异步读取excel,java,postman,java,eureka

1,maven 模块

	<!-- excel工具 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>easyexcel</artifactId>
		<version>3.1.0</version>
		<exclusions>
			<exclusion>
				<artifactId>poi-ooxml-schemas</artifactId>
				<groupId>org.apache.poi</groupId>
			</exclusion>
		</exclusions>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.22</version>
		<scope>provided</scope>
	</dependency>

2,同步无规则读取

    /** 同步-无规则 */
    public static void simpleRead(String fileName,int head) {
        List<Map<Integer, String>> listMap =           EasyExcel.read(fileName).sheet().headRowNumber(head).doReadSync();
        for (Map<Integer, String> data : listMap) {
            log.info(JSON.toJSONString(data));
        }
    }

easyexcel异步读取excel,java,postman,java,eureka

 3,异步-匹配列名读取

public static void byNameRead(String fileName,int head) {
		EasyExcel.read(fileName, ExcelReadData.class, new ExcelReadListener()).sheet().headRowNumber(head).doRead();
	}

创建数据类

package com.ruoyi.ibs.util;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

/**
*@author    created by Jerry
*@date  2022年5月25日---上午9:46:07
*@problem
*@answer
*@action
*/

@Getter
@Setter
@EqualsAndHashCode
public class ExcelReadData {
	@ExcelProperty("工号")
	private String s0;

	@ExcelProperty("姓名")
	private String s1;

	@ExcelProperty("身份证号")
	private String s2;

	@ExcelProperty("帐号")
	private String s3;

	@ExcelProperty("部门")
	private String s4;

	@ExcelProperty("实发工资")
	private String s5;

	**
	* 强制读取第6列这里不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配
	*/
	@ExcelProperty(index = 5)
	private Double s6;

	/**
	* 这里用string 去接日期才能格式化。我想接收年月日格式
	*/
	@ExcelProperty(index = 6)
	@DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
	private String s7;

	/**
	* 我想接收百分比的数字
	*/
	@ExcelProperty(index = 7)
	@NumberFormat("#.##%")
	private String s8;
}

创建监听类

package com.ruoyi.ibs.util;

import java.util.List;
import java.util.Map;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;

/**
*@author    created by Jerry
*@date  2022年5月25日---上午9:55:06
*@problem
*@answer
*@action
*/

@Slf4j
public class ExcelReadListener extends AnalysisEventListener<ExcelReadData>{
	
	/**
     * 每隔500条存储数据库
     */
    private static final int BATCH_COUNT = 500;
    private List<ExcelReadData> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);

	@Override
    public void invoke(ExcelReadData data, AnalysisContext context) {
        log.info("解析到一条数据:{}", JSON.toJSONString(data));
        cachedDataList.add(data);
        if (cachedDataList.size() >= BATCH_COUNT) {
            saveData();
            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        saveData();
        log.info("所有数据解析完成!");
    }

    /**
     * 加上存储数据库
     */
    private void saveData() {
        log.info("{}条数据,开始存储数据库!", cachedDataList.size());
        log.info("存储数据库成功!");
    }
}

4,异步-匹配合并单元格表头

/** 异步-匹配合并单元格表头 */
    public static void test(String fileName,int head) {
    	EasyExcel.read(fileName, new ExcelReadListener2()).sheet().headRowNumber(head).doRead();
    }

创建数据类

package com.ruoyi.ibs.util;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

/**
*@author    created by Jerry
*@date  2022年5月25日---上午9:46:07
*@problem
*@answer
*@action
*/

@Getter
@Setter
@EqualsAndHashCode
public class ExcelReadData {
	private String e0;
	private String e1;
	private String e2;
	private String e3;
	private String e4;
	private String e5;
	private String e6;
	private String e7;
	private String e8;
	private String e9;
	private String e10;
	private String e11;
	private String e12;
	private String e13;
	private String e14;
	private String e15;
	private String e16;
	private String e17;
	private String e18;
	private String e19;
	private String e20;
	private String e21;
	private String e22;
	private String e23;
	private String e24;
	private String e25;
	private String e26;
	private String e27;
	private String e28;
	private String e29;
	private String e30;
	private String e31;
	private String e32;
	private String e33;
	private String e34;
	private String e35;
	private String e36;
	private String e37;
	private String e38;
	private String e39;
	
}

创建监听类

package com.ruoyi.ibs.util;

import java.util.List;
import java.util.Map;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;

/**
*@author    created by Jerry
*@date  2022年5月25日---上午9:55:06
*@problem
*@answer
*@action
*/

@Slf4j
public class ExcelReadListener2 extends AnalysisEventListener<Map<Integer, String>>{
	private Map<Integer, String> m_headMap = null;
    private static final int BATCH_COUNT = 500;
    private List<Map<Integer, String>> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);

    @Override
	public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
		for (int i = 0; i < headMap.size(); i++) {
			String element = headMap.get(Integer.valueOf(i));
			if( element == null && m_headMap != null )
			{
				element = m_headMap.get(Integer.valueOf(i));
				headMap.replace(i, element);
			}
		}
		super.invokeHeadMap(headMap, context);
		m_headMap = headMap;
	}
    
    @Override
    public void invoke(Map<Integer, String> data, AnalysisContext context) {
    	log.info("表头:{}", JSON.toJSONString(m_headMap));
        log.info("数据:{}", JSON.toJSONString(data));
        cachedDataList.add(data);
        if (cachedDataList.size() >= BATCH_COUNT) {
            saveData();
            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        saveData();
        log.info("所有数据解析完成!");
    }

    /**
     * 加上存储数据库
     */
    private void saveData() {
        log.info("{}条数据,开始存储数据库!", cachedDataList.size());
        log.info("存储数据库成功!");
    }
}

easyexcel异步读取excel,java,postman,java,eureka

参考:EasyExcel文章来源地址https://www.toymoban.com/news/detail-516651.html

到了这里,关于若依使用easyexcel读取解析excel文件示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EasyExcel轻松读取Excel文件!

    EasyExcel是一个Java库,用于快速、简单地读写Excel文件。要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: 一下几种方式读取文件 1、EasyExcel.read() 例如,下面的代码演示了如何使用EasyExcel读取一个Excel文件中的数据: 在上面的代码中,

    2024年02月09日
    浏览(26)
  • Java EasyExcel高效读取保存excel文件

    阿里开源出一款易上手,且比较节省内存的Excel操作框架:EasyExcel。EasyExcel是一行一行进行读取,再大的excel也不会出现OOM。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存

    2024年02月16日
    浏览(36)
  • Apache POI及easyExcel读取及写入excel文件

    目录 1.excel 2.使用场景 3.Apache POI 4.easyExcel 5.总结 1.excel excel分为两版,03版和07版。 03版的后缀为xls,最大有65536行。 07版的后缀为xlsx,最大行数没有限制。 2.使用场景 将用户信息导出到excel表格中。 将excel中的数据读取到数据库中。 3.Apache POI (1)说明 Apache POI是Apache软件基金会

    2024年02月06日
    浏览(35)
  • 使用EasyExcel读写Excel文件

    笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高。 查找资料后,发现POI提供了读取大量数据的方法,但是用起来比较复杂。同时看到有人提到用EasyExcel读取

    2024年02月13日
    浏览(34)
  • 基于EasyExcel的Excel读取

    1.引入依赖 2.读取器代码: 3.测试

    2024年02月12日
    浏览(30)
  • EasyExcel读取多sheet excel异常

    使用Spring Boot集成EasyExcel进行导入excel多sheet,执行异常 file是MultipartFile,入参,主要处理流程如下 异常: com.alibaba.excel.exception.ExcelCommonException: Convert excel format exception.You can try specifying the ‘excelType’ yourself 按照描述,缺少excelType参数,补充后,代码大概如下: 异常: com.

    2024年02月16日
    浏览(21)
  • 使用POI和EasyExcel来实现excel文件的导入导出

    废话不多说咱们直接上干货!!!! 一.读取Excel表格 【1】使用POI读取excel表格中的数据 POI还可以操作我们这个word文档等等,他不仅仅只能弄Excel,而JXI只能操作excel 1.POI的结构,我们可以更具文件的类去选择 相关的对象我当前是使用的XLSX来操作的 HSSF - 提供读写Microsoft

    2024年02月05日
    浏览(37)
  • java解析excel,poi和easyExcel

    做项目遇到上传excel并解析excel内容组装成结构话json,网上查了很多方法,做了poi和easyExcel两个方法的对比 两者都可以解析excel文件,但是两个也有不同: 一、poi 官方说明:https://poi.apache.org/components/index.html A、03版excel和07版excel: 1)03版excel最多65536行,最大列数是256列,

    2023年04月22日
    浏览(33)
  • JAVA解析EXCEL(JExcelAPI,POI,EasyExcel)

    demo代码:https://github.com/RwTo/excel-demo JAVA解析Excel 一般有三种方式 JExcelAPI POI EasyExcel 官网:https://jexcelapi.sourceforge.net/ 仅支持 2003 版本的Excel 也就是 后缀名为 xls 的文件 采用流式处理模型,逐行读取和写入 ——因此 可以处理大量数据,一般不会出现OOM Demo 读xls 文件 写xls 文件

    2024年02月15日
    浏览(28)
  • 若依@Excel注解自动获取导出字段,字典解析

    若依系统中实体类导出字段使用了 @Execl 如不是若依系统 最后附有excel接口 普通导出: @Excel (name = \\\"单位\\\") private String unit; 带字典解析导出: @Excel (name = \\\"状态\\\", dictType = \\\"sys_true_false\\\") private Integer attributeCategory; 系统后台字典配置: 新增的字典也会存在redis缓存中(直接查询缓存

    2024年02月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包