@Test
    public void synchronousRead() {
        String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
        // Specify the class to read, then read the first sheet. Synchronous reading will automatically finish.
        List<DemoData> list = EasyExcel.read(fileName).head(DemoData.class).sheet().doReadSync();
        for (DemoData data : list) {
            log.info("Read data:{}", JSON.toJSONString(data));
        }

        // Alternatively, you can read without specifying a class, returning a list, then read the first sheet.
        // Synchronous reading will automatically finish.
        List<Map<Integer, String>> listMap = EasyExcel.read(fileName).sheet().doReadSync();
        for (Map<Integer, String> data : listMap) {
            // Return key-value pairs for each data item, representing the column index and its value.
            log.info("Read data:{}", JSON.toJSONString(data));
        }
    }
Synchronous return is not recommended, as it will store data in memory if the data volume is large.
fastexcel-test/src/test/java/cn/idev/excel/test/demo/read/ReadTest.java