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

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

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

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需要一个inputinputstream ,它需要一个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 

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

Interesting Posts