• 流方式读取Excel2007-Excel07SaxReader
    • 介绍
    • 使用
      • 定义行处理器
      • ExcelUtil快速读取
      • 构建对象读取

    流方式读取Excel2007-Excel07SaxReader

    介绍

    在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了Sax模式的读取方式。

    Excel07SaxReader只支持Excel2007格式的Sax读取。

    使用

    定义行处理器

    首先我们实现一下RowHandler接口,这个接口是Sax读取的核心,通过实现handle方法编写我们要对每行数据的操作方式(比如按照行入库,入List或者写出到文件等),在此我们只是在控制台打印。

    1. private RowHandler createRowHandler() {
    2. return new RowHandler() {
    3. @Override
    4. public void handle(int sheetIndex, int rowIndex, List<Object> rowlist) {
    5. Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);
    6. }
    7. };
    8. }

    ExcelUtil快速读取

    1. ExcelUtil.read07BySax("aaa.xlsx", 0, createRowHandler());

    构建对象读取

    1. Excel07SaxReader reader = new Excel07SaxReader(createRowHandler());
    2. reader.read("d:/text.xlsx", 0);

    reader方法的第二个参数是sheet的序号,-1表示读取所有sheet,0表示第一个sheet,依此类推。