@Test
    public void complexFill() {
        // Template note: Use {} to represent variables. If the template contains "{", "}" as special characters, use "\{", "\}" instead.
        // {} represents a regular variable, {.} represents a list variable.
        String templateFileName =
            TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "complex.xlsx";

        String fileName = TestFileUtil.getPath() + "complexFill" + System.currentTimeMillis() + ".xlsx";
        ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build();
        WriteSheet writeSheet = EasyExcel.writerSheet().build();
        // Note: The `forceNewRow` parameter ensures that a new row is created when writing a list, even if there are no empty rows below it.
        // By default, it is false, meaning it will use the next row if available, or create one if not.
        // Setting `forceNewRow=true` has the drawback of loading all data into memory, so use it cautiously.
        // If your template has a list and data below it, you must set `forceNewRow=true`, but this will consume more memory.
        // For large datasets where the list is not the last row, refer to the next example.
        FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
        excelWriter.fill(data(), fillConfig, writeSheet);
        excelWriter.fill(data(), fillConfig, writeSheet);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("date", "2019-10-09 13:28:28");
        map.put("total", 1000);
        excelWriter.fill(map, writeSheet);
        excelWriter.finish();
    }
Example of complex data filling.

@since 2.1.1
fastexcel-test/src/test/java/cn/idev/excel/test/temp/fill/FillTempTest.java