fakhrulsojib opened a new pull request, #1031: URL: https://github.com/apache/poi/pull/1031
## Summary `Row.setRowStyle()` does not propagate styles to cells via `Cell.getCellStyle()`. This is a regression from POI 3.17 affecting both [XSSFCell](cci:2://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCell.java:75:0-1257:1) and [SXSSFCell](cci:2://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:47:0-1343:1). **Bugzilla:** https://bz.apache.org/bugzilla/show_bug.cgi?id=69973 **Related:** Bug 66679, Bug 56011 ## Root Cause Three issues in `XSSFCell.getCellStyle()` (and mirrored in [SXSSFCell](cci:2://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:47:0-1343:1)): 1. Fallback chain is `explicit → column` — row is never checked 2. [getDefaultCellStyleFromColumn()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:612:4-621:5) uses `XSSFSheet.getColumnStyle()` which converts "no column style" (-1) into the default style (0), so it never returns null — blocking any further fallback 3. [applyDefaultCellStyleIfNecessary()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCell.java:613:4-617:5) (called during `workbook.write()`) only checks column style ## Changes **[XSSFCell.java](cci:7://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCell.java:0:0-0:0) / [SXSSFCell.java](cci:7://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:0:0-0:0):** - [getCellStyle()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:585:4-610:5) — new 4-step fallback: explicit → column → row → default(0) - [getDefaultCellStyleFromColumn()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:612:4-621:5) — use `ColumnHelper.getColDefaultStyle()` directly, return null when no explicit column style - [getDefaultCellStyleFromRow()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:623:4-629:5) — new helper using `row.isFormatted()` / `row.getRowStyle()` - [applyDefaultCellStyleIfNecessary()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCell.java:613:4-617:5) — simplified to reuse [getCellStyle()](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFCell.java:585:4-610:5) fallback chain **[TestXSSFRow.java](cci:7://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java:0:0-0:0) / [TestSXSSFRow.java](cci:7://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFRow.java:0:0-0:0):** - [testSetRowStylePropagatedToCells](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFRow.java:75:4-116:5) — verifies in-memory inheritance + explicit style not overridden - [testSetRowStylePropagatedAfterWrite](cci:1://file:///home/fakhrulislam/Documents/personal_project/poi/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestSXSSFRow.java:118:4-154:5) — verifies style persistence through write/read-back cycle ## Test Results | Suite | Tests | Result | |---|---|---| | TestXSSFRow | 28 (26 + 2 new) | ✅ | | TestXSSFCell | 85 | ✅ No regressions | | TestSXSSFRow | 16 (14 + 2 new) | ✅ | | TestSXSSFCell | 56 | ✅ No regressions | -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
