https://issues.apache.org/bugzilla/show_bug.cgi?id=54399
Bug ID: 54399
Summary: Sheet index (-1) is out of range when rename sheet
Product: POI
Version: 3.9
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: XSSF
Assignee: [email protected]
Reporter: [email protected]
Classification: Unclassified
Created attachment 29838
--> https://issues.apache.org/bugzilla/attachment.cgi?id=29838&action=edit
XLSX file that fails sheet rename.
For one particular spreadsheet, renaming a sheet returns
java.lang.IllegalArgumentException: Sheet index (-1) is out of range (0..1)
at
org.apache.poi.xssf.usermodel.XSSFWorkbook.validateSheetIndex(XSSFWorkbook.java:1043)
at
org.apache.poi.xssf.usermodel.XSSFWorkbook.getSheetName(XSSFWorkbook.java:876)
at
org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getSheetNameByExternSheet(XSSFEvaluationWorkbook.java:135)
at
org.apache.poi.xssf.usermodel.helpers.XSSFFormulaUtils$1.getSheetNameByExternSheet(XSSFFormulaUtils.java:81)
at
org.apache.poi.ss.formula.ptg.ExternSheetNameResolver.prependSheetName(ExternSheetNameResolver.java:42)
at
org.apache.poi.ss.formula.ptg.Area3DPtg.toFormulaString(Area3DPtg.java:100)
at
org.apache.poi.ss.formula.FormulaRenderer.toFormulaString(FormulaRenderer.java:92)
at
org.apache.poi.xssf.usermodel.helpers.XSSFFormulaUtils.updateName(XSSFFormulaUtils.java:143)
at
org.apache.poi.xssf.usermodel.helpers.XSSFFormulaUtils.updateSheetName(XSSFFormulaUtils.java:97)
at
org.apache.poi.xssf.usermodel.XSSFWorkbook.setSheetName(XSSFWorkbook.java:1230)
Code is:
import org.apache.poi.ss.usermodel.*;
import java.io.*;
FileInputStream fileInputStream = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(fileInputStream);
System.out.println("sheets:" + workbook.getNumberOfSheets());
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
System.out.println("i:" + i);
workbook.setSheetName(i, "Sheet" + (i + 1));
}
fileInputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
workbook.write(fileOutputStream);
fileOutputStream.close();
This outputs
sheets:1
i:0
Tested on POI versions 3.8 and 3.9.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]