使用 xml 标记的 JXLS 分组

JXLS grouping with xml markup

JXLS 2.x 的 xml 配置是否支持 groupBy

原因是我有一个非常基本的分组示例,可以与 excel 注释一起使用,但是当我通过 xml 标记使用相同的配置时,它只是拒绝工作。输出excel分组,但每组下没有数据

我在网上也找不到任何可用的示例,所以要么是我的语法有问题(见下文),要么是 JXLS 2.x 通过 xml 标记不支持 groupBy .

excel 评论(有效!)

detail_config.xml xml 配置(不起作用!)

<xls>
    <area ref="Template!A1:D4">
        <each items="clockinouts" groupBy="employeeName" groupOrder="asc" ref="Template!A1:D3">
            <area ref="Template!A1:D3">
                <each items="_group.items" var="clockinout" ref="Template!A2:D2">
                    <area ref="Template!A2:D2"/>
                </each>
            </area>
        </each>
    </area>
</xls>

Java 要加载的代码 xml 配置

public static void main(String args[]) throws IOException {
    List<ClockInOut> clockInOuts;

    clockInOuts = loadCSV();
    InputStream is = GroupingDemo.class.getResourceAsStream("detail_template.xlsx");

    try (OutputStream os = new FileOutputStream("target/detail.xlsx")) {
        Transformer transformer = TransformerFactory.createTransformer(is, os);
        try (InputStream configInputStream = GroupingDemo.class.getResourceAsStream("detail_config.xml")) {
            AreaBuilder areaBuilder = new XmlAreaBuilder(configInputStream, transformer);
            List<Area> xlsAreaList = areaBuilder.build();
            Area xlsArea = xlsAreaList.get(0);
            Context context = new Context();
            context.putVar("clockinouts", clockInOuts);
            xlsArea.applyAt(new CellRef("Template!A1"), context);
            transformer.write();
        }
    }
}

基于 JXLS 存储库中的 source code, it looks like XML markup only supports item, var, dir, and ref attributes, hence the above behavior is expected. Raised an issue,因此希望这会在未来的版本中得到修复。

现在 Excel 标记似乎是前进的方向。