https://bz.apache.org/bugzilla/show_bug.cgi?id=69266
Bug ID: 69266
Summary: File Corruption when Modifying Page Setup in Existing
.xlsx Sheets
Product: POI
Version: unspecified
Hardware: PC
OS: Mac OS X 10.1
Status: NEW
Severity: normal
Priority: P2
Component: XSSF
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
When using Apache POI to modify the page setup of an existing .xlsx sheet,
specifically setting the “Fit to Page” options (setFitWidth and setFitHeight),
the resulting file becomes corrupted and cannot be opened by Excel. This issue
occurs when reading an existing .xlsx file, applying the “Fit to Page”
settings, and then saving the modified sheet to a new file. The corruption
seems to stem from the way POI handles the modification of print setup options
in sheets that already have pre-existing configurations, leading to invalid or
incomplete file structures in the output .xlsx file.
Steps to Reproduce:
1. Open an existing .xlsx file using Apache POI.
2. Access a sheet and modify the page setup by enabling “Fit to
Page” and setting both width and height to 1.
3. Save the modified sheet to a new .xlsx file.
4. Attempt to open the newly saved file in Excel.
Java Code -
String inputFilePath =
"/Users/username/Downloads/SpreadsheetSetFitToPageRead.xlsx";
String outputFilePath =
"/Users/username/Downloads/SpreadsheetSetFitToPageReadTrue.xlsx";
try (FileInputStream fis = new FileInputStream(new
File(inputFilePath));
Workbook workbook = WorkbookFactory.create(fis)) {
// Get the first sheet from the workbook (or specify the sheet
index/name)
Sheet sheet = workbook.getSheetAt(0);
// Set Fit to Page options
sheet.setFitToPage(true);
PrintSetup printSetup = sheet.getPrintSetup();
printSetup.setFitWidth((short) 1); // Fit to 1 page wide
printSetup.setFitHeight((short) 1); // Fit to 1 page tall
// Write the modified workbook to a new file
try (FileOutputStream fos = new FileOutputStream(new
File(outputFilePath))) {
workbook.write(fos);
}
System.out.println("Sheet modifications are saved successfully in "
+ outputFilePath);
} catch (IOException e) {
e.printStackTrace();
}
--
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]