JXLS设置工作表名称

时间:2016-06-09 07:56:00

标签: java apache-poi jxls

我想提供一种由命令指定工作表名称的方法。工作表名称应根据工作表中的内容动态创建。

我注意到在使用每个命令的多表格属性时,可以为动态图纸指定固定的图纸名称。

  1. version 1 documentation中,引用了使用$ {workbook.setSheetName(0,department.name)}重命名工作表的功能。这可以在v2中使用吗?它应该如何工作?工作簿是否需要添加到上下文中,或者之前是否可用?

  2. 我尝试在自定义命令中重命名工作表,但似乎在XlsArea中对工作表名称的依赖太多,因为要在XlsArea.applyAt中途更改名称。模板表不会被删除,处理也没有完成。

  3. 我想过尝试获取自定义命令来添加区域侦听器来更改工作表名称。但区域侦听器仅在父区域上调用,我无法从命令中访问该区域。

  4. 谢谢,

    韦恩。

3 个答案:

答案 0 :(得分:1)

我怀疑这是正确的做法,但直到现在这是我设法做到的唯一方法:

Context context = PoiTransformer.createInitialContext();
Workbook workbook = WorkbookFactory.create(templateInputStream);
workbook.setSheetName(0, "newName");//Changing name of the first sheet
PoiTransformer transformer = PoiTransformer.createTransformer(workbook);
transformer.setOutputStream(resultOutputstream);
JxlsHelper.getInstance().processTemplate(context, transformer);

答案 1 :(得分:0)

如果使用multisheet generation功能,您只需将自己的CellRefGenerator传递给Each-Command,并在其中动态创建工作表名称。

目前无法在Excel模板中传递CellRefGenerator,但添加此功能应该非常简单。

或者您可以使用Java代码设置CellRefGenerator,如文档中所示。

答案 2 :(得分:0)

可以使用XLSTransformer类的下面的方法来完成。

XLSTransformer transformer = new XLSTransformer();
setSpreadsheetToRename(oladSheetName, String newSheetName)