首页 > 编程语言 >JAVA读取Excel文件

JAVA读取Excel文件

时间:2023-02-27 09:46:42浏览次数:34  
标签:JAVA 读取 List Excel 表头 sheetNo param headRowNum sheet

工具类

 

/**
     * 同步无模型读取(默认读取sheet0,从第2行开始读)
     *
     * @param filePath 文件路径
     * @return List<Map < Integer, String>>
     */
    public static List<Map<Integer, String>> syncRead(String filePath) {
        return EasyExcelFactory.read(filePath).sheet().doReadSync();
    }

    /**
     * 同步无模型读取(默认表头占一行,从第2行开始读)
     *
     * @param filePath 文件路径
     * @param sheetNo  sheet页号,从0开始
     * @return List<Map < Integer, String>>
     */
    public static List<Map<Integer, String>> syncRead(String filePath, Integer sheetNo) {
        return EasyExcelFactory.read(filePath).sheet(sheetNo).doReadSync();
    }

    /**
     * 同步无模型读取(指定sheet和表头占的行数)
     *
     * @param inputStream 输入流
     * @param sheetNo     sheet页号,从0开始
     * @param headRowNum  表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<Map < colNum, cellValue>>
     */
    public static List<Map<Integer, String>> syncRead(InputStream inputStream, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(inputStream).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
    }

    /**
     * 同步无模型读取(指定sheet和表头占的行数)
     *
     * @param file       文件
     * @param sheetNo    sheet页号,从0开始
     * @param headRowNum 表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<Map < colNum, cellValue>>
     */
    public static List<Map<Integer, String>> syncRead(File file, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(file).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
    }

    /**
     * 同步无模型读取(指定sheet和表头占的行数)
     *
     * @param filePath   文件路径
     * @param sheetNo    sheet页号,从0开始
     * @param headRowNum 表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<Map < colNum, cellValue>>
     */
    public static List<Map<Integer, String>> syncRead(String filePath, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(filePath).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
    }

    /**
     * 同步按模型读取(默认读取sheet0,从第2行开始读)
     *
     * @param filePath 文件路径
     * @param clazz    模型的类类型(excel数据会按该类型转换成对象)
     * @return List<T>
     */
    public static List<T> syncReadModel(String filePath, Class<?> clazz) {
        return EasyExcelFactory.read(filePath).sheet().head(clazz).doReadSync();
    }

    /**
     * 同步按模型读取(默认表头占一行,从第2行开始读)
     *
     * @param filePath 文件路径
     * @param clazz    模型的类类型(excel数据会按该类型转换成对象)
     * @param sheetNo  sheet页号,从0开始
     * @return List<T>
     */
    public static List<T> syncReadModel(String filePath, Class<?> clazz, Integer sheetNo) {
        return EasyExcelFactory.read(filePath).sheet(sheetNo).head(clazz).doReadSync();
    }

    /**
     * 同步按模型读取(指定sheet和表头占的行数)
     *
     * @param inputStream 输入流
     * @param clazz       模型的类类型(excel数据会按该类型转换成对象)
     * @param sheetNo     sheet页号,从0开始
     * @param headRowNum  表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<T>
     */
    public static List<T> syncReadModel(InputStream inputStream, Class<?> clazz, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(inputStream).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
    }

    /**
     * 同步按模型读取(指定sheet和表头占的行数)
     *
     * @param file       文件
     * @param clazz      模型的类类型(excel数据会按该类型转换成对象)
     * @param sheetNo    sheet页号,从0开始
     * @param headRowNum 表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<T>
     */
    public static List<T> syncReadModel(File file, Class<?> clazz, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(file).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
    }

    /**
     * 同步按模型读取(指定sheet和表头占的行数)
     *
     * @param filePath   文件路径
     * @param clazz      模型的类类型(excel数据会按该类型转换成对象)
     * @param sheetNo    sheet页号,从0开始
     * @param headRowNum 表头占的行数,从0开始(如果要连表头一起读出来则传0)
     * @return List<T>
     */
    public static List<T> syncReadModel(String filePath, Class<?> clazz, Integer sheetNo, Integer headRowNum) {
        return EasyExcelFactory.read(filePath).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
    }


    /**
     * 异步按模型读取(默认表头占一行,从第2行开始读)
     */

    /**
     * 异步按模型读取
     *
     * @param file          文件
     * @param excelListener 监听器,在监听器中可以处理行数据LinkedHashMap,表头数据,异常处理等
     * @param clazz         模型的类类型(excel数据会按该类型转换成对象)
     * @param sheetNo       sheet页号,从0开始
     * @param headRowNum    表头占的行数,从0开始(如果要连表头一起读出来则传0)
     */
    public static void asyncReadModel(File file, AnalysisEventListener<T> excelListener, Class<?> clazz, Integer sheetNo, Integer headRowNum) {
        EasyExcelFactory.read(file, clazz, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
    }

    /**
     * 异步按模型读取 文件路径
     */

    /**
     * 异步按模型读取 输入流
     *
     */

    /**
     * 无模板写文件 文件路径
     */


    /**
     * 无模板写文件 指定sheet名称
     */

    /**
     * 根据excel模板文件写入文件
     */

    /**
     * 根据excel模板文件写入文件
     *
     */

    /**
     * 按模板写文件
     */

    /**
     * 按模板写文件
     *
     */

    /**
     * 按模板写文件(包含某些字段)
     */

    /**
     * 按模板写文件(排除某些字段)
     */

    /**
     * 多个sheet页的数据链式写入
     */


    /**
     * 多个sheet页的数据链式写入(失败了会返回一个有部分数据的Excel)
     */

    /**
     * 同步按模型读,设置监听(指定sheet和表头占的行数)
     */
View Code

 

 

 

具体使用

public void upload(@RequestParam("file") MultipartFile file) throws Exception {
        File newFile = FileUtil.multipartFileToFile(file);

        //创建监听器
        ExcelListener listener = new ExcelListener(BoxAndUnitDTO.class);
        //调用EasyExcelUtils
        EasyExcelUtils.asyncReadModel(newFile, listener, BoxAndUnitDTO.class, 0, 1);

        //获取解决出的错误信息
        List<String> errorMessage = listener.getErrorMessage();
        System.out.println("errorMessage = " + errorMessage);

        //获取监听器读到的数据
        List<String> rows = listener.getRows();
        for (Object o : rows) {
            System.out.println(o.toString());
        }
        FileUtil.deleteTempFile(newFile);
}
View Code

 

标签:JAVA,读取,List,Excel,表头,sheetNo,param,headRowNum,sheet
From: https://www.cnblogs.com/foredawn/p/17158608.html

相关文章

  • java 读 excel 表格(xlsx) 用到的 poi-5.2.3 相关的 jar
    今天第一次用java读取xlsx表格中的数据,到网上下载了一个poi5.2.3(发布日期:2022-9-16),这是目前的最新版本。下载后,解压缩。看了一下文件夹中有很多的jar,目前只需要......
  • Java中的Unsafe类
    Java中的Unsafe类Unsafe类时sun,misc包下的一个类,主要用于执行一些Native方法,同时它赋予了Java直接操作内存的能力,但是直接操作内存的能力同时也破坏了Java的安全性,可......
  • 读Java性能权威指南(第2版)笔记03_ Java SE API技巧中
    1. 缓冲I/O1.1. 对于文件和套接字,压缩和字符串编码的操作,必须适当地对I/O进行缓冲1.1.1. 两个流操作的是字节块(来自缓冲流)而不是一系列的单字节(来自ObjectOutputStre......
  • Java基础——(综合练习)普通加密
    packagecom.zhao.test;publicclassTest18{/*需求:​某系统的数字密码(大于0),比如1983,采用加密方式进行传输。规则如下:......
  • Java基础——(综合练习)选手打分
    packagecom.zhao.test;importjava.util.Scanner;publicclassTest17{/*需求:在唱歌比赛中,有6名评委给选手打分,分数范围是[0-100]之间的整数。选......
  • java扫描指定注解的工具类
    publicclassBaseClassUtils{privatestaticfinalStringresource_pattern="/*.class";publicstaticMap<String,Class>scanMyComponentAnnotation(Str......
  • java学习日记20230227-java学习方法/转义字符/注释
    Java学习方法学习java基本原理和基本语法快速入门(基本程序CRUD)研究技术的注意事项,使用细节,使用规范,如何优化JAVA转义字符\t:一个制表位,实现对......
  • Python中如何读取npy、npz文件?
    npy以及npz这两种文件格式,是python第三方库numpy才能够保存和读取的文件类型,而也只有通过该库才有方法来完成读取保存操作。下面这篇文章所要介绍的内容就是,python读取和保......
  • java面试考题小记
    1.在java中各种数据的默认值整数(byte、short、int、long)的默认值是:0;浮点数(float、double)的默认值是:0.0;字符(char)的默认值是:空格;布尔(boolean)的默认值:false;引用类型(arra......
  • java学习日记20230226-java环境搭建及运行机制
    JDK安装配置环境变量:当执行的程序在当前目录不存在时,windows去系统path环境变量里面进行查找,如果没有找到报错不存在该命令。我的电脑-属性-高级系统设置-......