![](/img/trans.png)
[英]Importing Excel With JXLS: is it possible to specify sheet by order rather than name?
[英]JXLS Set Sheet Name
我想提供一種通過命令指定工作表名稱的方法。 工作表名稱應根據工作表中的內容動態創建。
我注意到,當使用每個命令的multisheet屬性時,可以為動態工作表指定固定的工作表名稱。
在版本1文檔中 ,引用了使用$ {workbook.setSheetName(0,department.name)}重命名工作表的功能。 可以在v2中使用嗎? 應該如何運作? 是需要將工作簿添加到上下文中還是以前可用?
我嘗試在自定義命令中重命名工作表,但似乎對XlsArea中工作表名稱的依賴性太大,因此無法在XlsArea.applyAt中途更改名稱。 模板工作表未刪除,處理未完成。
我考慮過嘗試獲取定制命令來添加區域偵聽器以更改工作表名稱。 但是區域偵聽器僅在父區域中調用,而我無法從命令中訪問該區域。
謝謝,
韋恩
我懷疑這是正確的方法,但是直到現在,這是我設法做到的唯一方法:
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);
如果使用多表生成功能,則只需將自己的CellRefGenerator傳遞給Every-Command並在其中動態創建表名稱。
當前無法在Excel模板中傳遞CellRefGenerator,但是添加此功能應該非常簡單。
或者,您可以使用文檔中所示的Java代碼設置CellRefGenerator。
可以使用XLSTransformer類的以下方法來完成。
XLSTransformer transformer = new XLSTransformer();
setSpreadsheetToRename(oladSheetName, String newSheetName)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.