Jxls:如何以编程方式定义模板并在变换器中使用?

时间:2017-07-20 20:27:12

标签: java excel templates transformer jxls

我正在使用Jxls将数据输出到excel。没有。列不是固定的,取决于谁在调用它。那么如何以编程方式定义模板?

在Jxls文档中,有三种方法可以使用excel标记,xml标记和Java Apis。使用Java Apis,定义了XmlArea,但其中一个构造函数将transform作为参数

public XlsArea(AreaRef areaRef, Transformer transformer);

 public XlsArea(String areaRef, Transformer transformer);

 public XlsArea(CellRef startCell, CellRef endCell, Transformer transformer);

 public XlsArea(CellRef startCellRef, Size size, List<CommandData> commandDataList, Transformer transformer);

Transformer constructor需要inputstream,这需要template个文件。

InputStream in = IdGenre.class.getResourceAsStream("/xlsTemplates/IdGenre/IdGenreTemplate.xlsx");

Transformer transformer = TransformerFactory.createTransformer(in, out);

根据我的理解,template是定义列中值的位置。

使用SimpleExporter

try(OutputStream os1 = new FileOutputStream("target/simple_export_output1.xls")) {
        List<Employee> employees = generateSampleEmployeeData();
        List<String> headers = Arrays.asList("Name", "Birthday", "Payment");
        SimpleExporter exporter = new SimpleExporter();
        exporter.gridExport(headers, employees, "name, birthDate, payment", os1);

It requires a transformer and throws exception.

java.lang.NullPointerException: Attempt to invoke interface method 'java.util.List org.jxls.transform.Transformer.getCommentedCells()' on a null object reference

如何以编程方式创建模板或如何使用SimpleExporter?任何帮助深表感谢。谢谢。

0 个答案:

没有答案