From 4fb34ebeae0d200cd36c4fbf3b2496aef9988298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Tue, 16 Dec 2025 18:03:45 +0100 Subject: [PATCH] Fix rules for table style application in XSLFTables. (#969) * Fix rules for table style application in XSLFTables. Table styles contain rules for first and last rows/columns, even and odd rows/columns... When one of these rules is empty, we are supposed to fall back to the "whole table" rules. The fallback must also be applied for the format that's not explicitly specified in the specific rules. when the corresponding specific rule is missing some info. Fallback must also be applied when the corresponding specific rule is missing some info. A couple of examples from the reproducer/test file included: The included reproducer/test file contained a few problems related to table style application: * The second style for horizontal/vertical banding (band2H, band2V) was never applied. * In the table with horizontal banding enabled, the style band1H did not set a font color, POI returned a null font color instead of the color from wholeTable. * In the table with horizontal banding enabled, the style band2H did not set a background color, POI returned null instead of the color specified in wholeTable. This patches fixes the behaviors mentioned above, making POI behavior match the one from MS Office and LibreOffice. * Replace uses of java.util.list.getFirst(). --- .../poi/xslf/usermodel/XSLFTableCell.java | 40 ++++++++-- .../poi/xslf/usermodel/TestXSLFTable.java | 74 ++++++++++++++++-- .../table-with-different-font-colors.pptx | Bin 0 -> 36562 bytes 3 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 test-data/slideshow/table-with-different-font-colors.pptx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java index 019679f9bf..c43483912a 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java @@ -438,7 +438,8 @@ public class XSLFTableCell extends XSLFTextShape implements TableCell shapes = ppt.getSlides().get(0).getShapes(); + assertEquals(1, shapes.size()); + assertTrue(shapes.get(0) instanceof XSLFTable); + XSLFTable tbl = (XSLFTable)shapes.get(0); + assertEquals(4, tbl.getNumberOfColumns()); + assertEquals(4, tbl.getNumberOfRows()); + assertNotNull(tbl.getCTTable()); + + // Yellow font color due to "first row" table style + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(0), "Text 1", + new Color(255, 255, 0), new Color(21, 96, 130)); + // Dark green font color due to direct format + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(2), "Text 3", + new Color(0, 176, 80), new Color(21, 96, 130)); + // Grey font color due to "even row" table style + fallback + verifyTableCellStyleColors(tbl.getRows().get(1).getCells().get(0), "Text 5", + new Color(119, 119, 119), new Color(204, 210, 216)); + // Light blue font color due to "odd row" table style + verifyTableCellStyleColors(tbl.getRows().get(2).getCells().get(0), "Text 9", + new Color(0, 255, 255), new Color(231, 234, 237)); + // Red font color due to direct format + verifyTableCellStyleColors(tbl.getRows().get(2).getCells().get(2), "Text 11", + new Color(255, 0, 0), new Color(231, 234, 237)); + // Blue font color due to "last row" table style + verifyTableCellStyleColors(tbl.getRows().get(3).getCells().get(0), "Text 13", + new Color(0, 0, 255), new Color(21, 96, 130)); + + // Second slide: test column-related table styles + + shapes = ppt.getSlides().get(1).getShapes(); + assertEquals(1, shapes.size()); + assertTrue(shapes.get(0) instanceof XSLFTable); + tbl = (XSLFTable)shapes.get(0); + assertEquals(4, tbl.getNumberOfColumns()); + assertEquals(4, tbl.getNumberOfRows()); + assertNotNull(tbl.getCTTable()); + + // Green font color due to "first column" table style + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(0), "Text 1", + new Color(0, 255, 0), new Color(21, 96, 130)); + // Grey font color due to "even column" table style + fallback + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(1), "Text 2", + new Color(119, 119, 119), new Color(204, 210, 216)); + // Light blue font color due to "odd column" table style + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(2), "Text 3", + new Color(0, 255, 255), new Color(231, 234, 237)); + // Red font color due to "last column" table style + verifyTableCellStyleColors(tbl.getRows().get(0).getCells().get(3), "Text 4", + new Color(255, 0, 0), new Color(21, 96, 130)); + + ppt.close(); + } +} diff --git a/test-data/slideshow/table-with-different-font-colors.pptx b/test-data/slideshow/table-with-different-font-colors.pptx new file mode 100644 index 0000000000000000000000000000000000000000..6272f055eb15a39f27efea8b7e9b468fec4b8538 GIT binary patch literal 36562 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 Kph(~E@BTmSAZY3U literal 0 HcmV?d00001