@Test
    public void repeatedRead() {
        String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        // Read all sheets
        // Note: The `doAfterAllAnalysed` method of DemoDataListener will be called once after each sheet is read.
        // All sheets will write to the same DemoDataListener.
        EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).doReadAll();

        // Read some sheets
        fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";

        // Method 1
        try (ExcelReader excelReader = EasyExcel.read(fileName).build()) {
            // For simplicity, the same head and Listener are registered here.
            // In actual use, different Listeners must be used.
            ReadSheet readSheet1 = EasyExcel.readSheet(0).head(DemoData.class)
                    .registerReadListener(new DemoDataListener()).build();
            ReadSheet readSheet2 = EasyExcel.readSheet(1).head(DemoData.class)
                    .registerReadListener(new DemoDataListener()).build();
            // Note: All sheets (sheet1 and sheet2) must be passed together.
            // Otherwise, for Excel 2003 files, the same sheet may be read multiple times, wasting performance.
            excelReader.read(readSheet1, readSheet2);
        }
    }
Read multiple or all sheets. Note that a sheet cannot be read multiple times; multiple reads require re-reading the file.
<p>
1. Create an entity class corresponding to the Excel data structure. Refer to {@link DemoData}.
<p>
2. Since EasyExcel reads Excel files row by row, you need to create a callback listener for each row. Refer to {@link DemoDataListener}.
<p>
3. Directly read the file.
fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/ReadTest.java