From 25a2dd9227d8e2d1e1818e324f720b15d3f36f1a Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 3 Nov 2025 07:03:31 +0100 Subject: [PATCH] Adjust parsing XSSFBuiltinTableStyle In case of invalid enum-value keep the fallback-handling as before as otherwise some existing documents fail to parse --- .../org/apache/poi/xssf/model/StylesTable.java | 13 +++++++++---- test-data/spreadsheet/xssf-enum.xltx.xlsx | Bin 0 -> 13876 bytes 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 test-data/spreadsheet/xssf-enum.xltx.xlsx diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/StylesTable.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/StylesTable.java index 99a9e37756..abab993669 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/model/StylesTable.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/model/StylesTable.java @@ -841,15 +841,20 @@ public class StylesTable extends POIXMLDocumentPart implements Styles { * @return defined style, either explicit or built-in, or null if not found * * @since 3.17 beta 1 - * @throws IllegalArgumentException if there is no explicit table style but the name is an * unknown built-in style */ public TableStyle getTableStyle(String name) { if (name == null) return null; TableStyle tableStyle = getExplicitTableStyle(name); - if (tableStyle == null) - tableStyle = XSSFBuiltinTableStyle.valueOf(name).getStyle(); - return tableStyle; + if (tableStyle != null) { + return tableStyle; + } + + try { + return XSSFBuiltinTableStyle.valueOf(name).getStyle(); + } catch (IllegalArgumentException e) { + return getExplicitTableStyle(name); + } } /** diff --git a/test-data/spreadsheet/xssf-enum.xltx.xlsx b/test-data/spreadsheet/xssf-enum.xltx.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..24a210447337991de6f1dfeb196f76e6115a23c7 GIT binary patch literal 13876 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 M??k9)_}kV00rZ-Dg8%>k literal 0 HcmV?d00001