Class ExcelReader

All Implemented Interfaces:
Closeable, AutoCloseable

public class ExcelReader extends ExcelBase<ExcelReader,ExcelReadConfig>
Excel读取器 读取Excel工作簿
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • ExcelReader

      public ExcelReader(String excelFilePath, int sheetIndex)
      构造
      Parameters:
      excelFilePath - Excel文件路径,绝对路径或相对于ClassPath路径
      sheetIndex - sheet序号,0表示第一个sheet
    • ExcelReader

      public ExcelReader(String excelFilePath, String sheetName)
      构造
      Parameters:
      excelFilePath - Excel文件路径,绝对路径或相对于ClassPath路径
      sheetName - sheet名,第一个默认是sheet1
    • ExcelReader

      public ExcelReader(File bookFile, int sheetIndex)
      构造(读写方式读取)
      Parameters:
      bookFile - Excel文件
      sheetIndex - sheet序号,0表示第一个sheet
    • ExcelReader

      public ExcelReader(File bookFile, String sheetName)
      构造(读写方式读取)
      Parameters:
      bookFile - Excel文件
      sheetName - sheet名,第一个默认是sheet1
    • ExcelReader

      public ExcelReader(InputStream bookStream, int sheetIndex)
      构造(只读方式读取)
      Parameters:
      bookStream - Excel文件的流
      sheetIndex - sheet序号,0表示第一个sheet
    • ExcelReader

      public ExcelReader(InputStream bookStream, String sheetName)
      构造(只读方式读取)
      Parameters:
      bookStream - Excel文件的流
      sheetName - sheet名,第一个默认是sheet1
    • ExcelReader

      public ExcelReader(org.apache.poi.ss.usermodel.Workbook book, int sheetIndex)
      构造
      Parameters:
      book - Workbook 表示一个Excel文件
      sheetIndex - sheet序号,0表示第一个sheet
    • ExcelReader

      public ExcelReader(org.apache.poi.ss.usermodel.Workbook book, String sheetName)
      构造
      Parameters:
      book - Workbook 表示一个Excel文件
      sheetName - sheet名,第一个默认是sheet1
    • ExcelReader

      public ExcelReader(org.apache.poi.ss.usermodel.Sheet sheet)
      构造
      Parameters:
      sheet - Excel中的sheet
  • Method Details

    • read

      public List<List<Object>> read()
      读取工作簿中指定的Sheet的所有行列数据
      Returns:
      行的集合,一行使用List表示
    • read

      public List<List<Object>> read(int startRowIndex)
      读取工作簿中指定的Sheet
      Parameters:
      startRowIndex - 起始行(包含,从0开始计数)
      Returns:
      行的集合,一行使用List表示
    • read

      public List<List<Object>> read(int startRowIndex, int endRowIndex)
      读取工作簿中指定的Sheet,此方法会把第一行作为标题行,替换标题别名
      Parameters:
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 结束行(包含,从0开始计数)
      Returns:
      行的集合,一行使用List表示
    • read

      public List<List<Object>> read(int startRowIndex, int endRowIndex, boolean aliasFirstLine)
      读取工作簿中指定的Sheet
      Parameters:
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 结束行(包含,从0开始计数)
      aliasFirstLine - 是否首行作为标题行转换别名
      Returns:
      行的集合,一行使用List表示
    • readColumn

      public List<Object> readColumn(int columnIndex, int startRowIndex)
      读取工作簿中指定的Sheet中指定列
      Parameters:
      columnIndex - 列号,从0开始计数
      startRowIndex - 起始行(包含,从0开始计数)
      Returns:
      列的集合
    • readColumn

      public List<Object> readColumn(int columnIndex, int startRowIndex, int endRowIndex)
      读取工作簿中指定的Sheet中指定列
      Parameters:
      columnIndex - 列号,从0开始计数
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 结束行(包含,从0开始计数)
      Returns:
      列的集合
    • read

      public void read(org.miaixz.bus.core.center.function.BiConsumerX<org.apache.poi.ss.usermodel.Cell,Object> cellHandler)
      读取工作簿中指定的Sheet,此方法为类流处理方式,当读到指定单元格时,会调用CellEditor接口 用户通过实现此接口,可以更加灵活地处理每个单元格的数据。
      Parameters:
      cellHandler - 单元格处理器,用于处理读到的单元格及其数据
    • read

      public void read(int startRowIndex, int endRowIndex, org.miaixz.bus.core.center.function.BiConsumerX<org.apache.poi.ss.usermodel.Cell,Object> cellHandler)
      读取工作簿中指定的Sheet,此方法为类流处理方式,当读到指定单元格时,会调用CellEditor接口 用户通过实现此接口,可以更加灵活地处理每个单元格的数据。
      Parameters:
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 结束行(包含,从0开始计数)
      cellHandler - 单元格处理器,用于处理读到的单元格及其数据
    • readAll

      public List<Map<Object,Object>> readAll()
      读取Excel为Map的列表,读取所有行,默认第一行做为标题,数据从第二行开始 Map表示一行,标题为key,单元格内容为value
      Returns:
      Map的列表
    • read

      public List<Map<Object,Object>> read(int headerRowIndex, int startRowIndex, int endRowIndex)
      读取Excel为Map的列表 Map表示一行,标题为key,单元格内容为value
      Parameters:
      headerRowIndex - 标题所在行,如果标题行在读取的内容行中间,这行做为数据将忽略
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 读取结束行(包含,从0开始计数)
      Returns:
      Map的列表
    • readAll

      public <T> List<T> readAll(Class<T> beanType)
      读取Excel为Bean的列表,读取所有行,默认第一行做为标题,数据从第二行开始
      Type Parameters:
      T - Bean类型
      Parameters:
      beanType - 每行对应Bean的类型
      Returns:
      Map的列表
    • read

      public <T> List<T> read(int headerRowIndex, int startRowIndex, Class<T> beanType)
      读取Excel为Bean的列表
      Type Parameters:
      T - Bean类型
      Parameters:
      headerRowIndex - 标题所在行,如果标题行在读取的内容行中间,这行做为数据将忽略,从0开始计数
      startRowIndex - 起始行(包含,从0开始计数)
      beanType - 每行对应Bean的类型
      Returns:
      Map的列表
    • read

      public <T> List<T> read(int headerRowIndex, int startRowIndex, int endRowIndex, Class<T> beanType)
      读取Excel为Bean的列表
      Type Parameters:
      T - Bean类型
      Parameters:
      headerRowIndex - 标题所在行,如果标题行在读取的内容行中间,这行做为数据将忽略,从0开始计数
      startRowIndex - 起始行(包含,从0开始计数)
      endRowIndex - 读取结束行(包含,从0开始计数)
      beanType - 每行对应Bean的类型
      Returns:
      Map的列表
    • read

      public <T> T read(SheetReader<T> sheetReader)
      读取数据为指定类型
      Type Parameters:
      T - 读取数据类型
      Parameters:
      sheetReader - SheetReader实现
      Returns:
      数据读取结果
    • readAsText

      public String readAsText(boolean withSheetName)
      读取为文本格式 使用ExcelExtractor 提取Excel内容
      Parameters:
      withSheetName - 是否附带sheet名
      Returns:
      Excel文本
    • getExtractor

      public org.apache.poi.ss.extractor.ExcelExtractor getExtractor()
      获取 ExcelExtractor 对象
      Returns:
      ExcelExtractor
    • readRow

      public List<Object> readRow(int rowIndex)
      读取某一行数据
      Parameters:
      rowIndex - 行号,从0开始
      Returns:
      一行数据
    • readCellValue

      public Object readCellValue(int x, int y)
      读取某个单元格的值
      Parameters:
      x - X坐标,从0计数,即列号
      y - Y坐标,从0计数,即行号
      Returns:
      值,如果单元格无值返回null
    • getWriter

      public ExcelWriter getWriter()
      获取Excel写出器 在读取Excel并做一定编辑后,获取写出器写出,规则如下:
      • 1. 当从流中读取时,转换为Writer直接使用Sheet对象,此时修改不会影响源文件,Writer中flush需要指定新的路径。
      • 2. 当从文件读取时,直接获取文件及sheet名称,此时可以修改原文件。
      Returns:
      ExcelWriter