使用空列表

时间:2018-03-27 12:28:51

标签: 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();
}

在代码中,您会看到两个列表:一个名为&#34的空列表; EMPTY_LIST_NAME&#34;以及名为&#34; NON_EMPTY_LIST_NAME&#34;的非空列表。在模板中,您的A8具有较大的单元格格式。在结果中,您仍然拥有大单元格格式的A8。但是不是单元格A8在结果中应该有这种格式,而是A7,因为由于空列表,结果向上移动了。

当细胞向下移动而不是向上移动时,我得到相同的结果。使用jxls 2.4.4。

2 个答案:

答案 0 :(得分:0)

这就是jxls设计的方式 - 它根据模板区域的变化与结果区域相比移动单元格。由于列表为空,因此结果区域高度为0但原始值为1,这就是为什么它向上移动我猜。

我建议你创建上下文以检查列表是否为空并插入列表字符串,如“无数据”或只是空字符串以使单元格被处理和保存。

答案 1 :(得分:0)

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