JXL的格式无法与空列表正确转移

  • 本文关键字:列表 转移 格式 JXL jxls
  • 更新时间 :
  • 英文 :


jxls结果的格式在您之前有一个空列表时不会被"移动"。

请在此处参考模板和输出文件:https://files.fm/u/e68wgub2

List<String> NON_EMPTY_LIST = new ArrayList<String>(Arrays.asList("A", "B", "C"));
List<String> EMPTY_LIST = new ArrayList<String>();
String EMPTY_LIST_NAME = "emptyList";
String NON_EMPTY_LIST_NAME = "nonEmptyList";
String INPUT_FILE_PATH = "./Test_Template.xls";
String OUTPUT_FILE_PATH = "./Output.xls";
InputStream is = null;
OutputStream os = null;
try {
    is = new FileInputStream(new File(INPUT_FILE_PATH));
    os = new FileOutputStream(OUTPUT_FILE_PATH);
    Context context = new Context();
    context.putVar(NON_EMPTY_LIST_NAME, NON_EMPTY_LIST);
    context.putVar(EMPTY_LIST_NAME, EMPTY_LIST);
    JxlsHelper.getInstance().processTemplate(is, os, context);
    is.close();
    os.flush();
    os.close();
    System.out.println(OUTPUT_FILE_PATH + " created.");
} catch (IOException e) {
    e.printStackTrace();
}

在代码中,您会看到两个列表:一个带有名称为" empty_list_name"的空列表和带有名称" non_empty_list_name"的非空列表。在模板中,您的A8具有较大的单元格式。结果,您仍然具有具有较大单元格格式的A8。但是,单元格A8在结果中不应具有此格式,而是A7,因为由于空白列表,结果转移了。

当单元向下移动而不是向上时,我会得到相同的结果。使用JXLS 2.4.4。

这是JXL设计的方式 - 它基于模板区域变化与结果区域相比,它可以移动单元格。由于列表为空,因此结果面积的高度为0,但原件是1,这就是为什么它移动了。

我可以在创建上下文时建议您检查列表是否为空,然后插入列表字符串,例如"无数据",或者只是空字符串以进行单元格处理并保存。

回答我自己的问题:这是一个错误。应该在新的JXLS版本中进行纠正:https://bitbucket.org/leonate/jxls/issues/100/cell-format-not-being-correctly-shifted

最新更新