From: PJ Fanning Date: Sun, 10 Jul 2022 12:22:54 +0000 (+0000) Subject: add param that allows invalid colors to be ignored X-Git-Tag: REL_5_2_3~204 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=79273a06aade08545460c4bbbad4c49d87e7b573;p=poi.git add param that allows invalid colors to be ignored git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902630 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java index fcfb8e7084..40949f4415 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java @@ -832,15 +832,17 @@ public class XSSFCellStyle implements CellStyle, Duplicatable { /** * Set the background fill color represented as a {@link org.apache.poi.ss.usermodel.Color} value. *
- * @param color the color to use + * @param color org.apache.poi.ss.usermodel.Color to set + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @throws IllegalArgumentException if you provide a Color instance that is not a {@link XSSFColor} * @since POI 5.2.3 */ @Override - public void setFillBackgroundColor(org.apache.poi.ss.usermodel.Color color) { + public void setFillBackgroundColor(org.apache.poi.ss.usermodel.Color color, boolean ignoreInvalidColors) { if (color == null || color instanceof XSSFColor) { setFillBackgroundColor((XSSFColor)color); - } else { + } else if (!ignoreInvalidColors) { throw new IllegalArgumentException("XSSFCellStyle only accepts XSSFColor instances"); } } @@ -903,14 +905,16 @@ public class XSSFCellStyle implements CellStyle, Duplicatable { * Set the foreground fill color represented as a {@link org.apache.poi.ss.usermodel.Color} value. *
* @param color the color to use + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @throws IllegalArgumentException if you provide a Color instance that is not a {@link XSSFColor} * @since POI 5.2.3 */ @Override - public void setFillForegroundColor(org.apache.poi.ss.usermodel.Color color) { + public void setFillForegroundColor(org.apache.poi.ss.usermodel.Color color, boolean ignoreInvalidColors) { if (color == null || color instanceof XSSFColor) { setFillForegroundColor((XSSFColor)color); - } else { + } else if (!ignoreInvalidColors) { throw new IllegalArgumentException("XSSFCellStyle only accepts XSSFColor instances"); } } diff --git a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java index 55621d9095..6a34ca930f 100644 --- a/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java +++ b/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java @@ -642,16 +642,18 @@ public final class HSSFCellStyle implements CellStyle, Duplicatable { * Set the background fill color represented as a {@link org.apache.poi.ss.usermodel.Color} value. *
* @param color the color to use + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @throws IllegalArgumentException if you provide a Color instance that is not a {@link HSSFColor} * @since POI 5.2.3 */ @Override - public void setFillBackgroundColor(org.apache.poi.ss.usermodel.Color color) + public void setFillBackgroundColor(org.apache.poi.ss.usermodel.Color color, boolean ignoreInvalidColors) { if (color instanceof HSSFColor) { short index2 = ((HSSFColor)color).getIndex2(); if (index2 != -1) setFillBackgroundColor(index2); - } else if (color != null) { + } else if (color != null && !ignoreInvalidColors) { throw new IllegalArgumentException("HSSFCellStyle only accepts HSSFColor instances"); } } @@ -701,16 +703,18 @@ public final class HSSFCellStyle implements CellStyle, Duplicatable { * Set the foreground fill color represented as a {@link org.apache.poi.ss.usermodel.Color} value. *
* @param color the color to use + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @throws IllegalArgumentException if you provide a Color instance that is not a {@link HSSFColor} * @since POI 5.2.3 */ @Override - public void setFillForegroundColor(org.apache.poi.ss.usermodel.Color color) + public void setFillForegroundColor(org.apache.poi.ss.usermodel.Color color, boolean ignoreInvalidColors) { if (color instanceof HSSFColor) { short index2 = ((HSSFColor)color).getIndex2(); if (index2 != -1) setFillForegroundColor(index2); - } else if (color != null) { + } else if (color != null && !ignoreInvalidColors) { throw new IllegalArgumentException("HSSFCellStyle only accepts HSSFColor instances"); } } diff --git a/poi/src/main/java/org/apache/poi/ss/usermodel/CellStyle.java b/poi/src/main/java/org/apache/poi/ss/usermodel/CellStyle.java index c4e539da8b..cc446886c0 100644 --- a/poi/src/main/java/org/apache/poi/ss/usermodel/CellStyle.java +++ b/poi/src/main/java/org/apache/poi/ss/usermodel/CellStyle.java @@ -312,13 +312,26 @@ public interface CellStyle { void setFillBackgroundColor(short bg); /** - * set the background fill color. - * use not a indexed color but a {@link org.apache.poi.ss.usermodel.Color) + * Set the background fill color. + * Uses a {@link org.apache.poi.ss.usermodel.Color} instead of an indexed color. + * + * @param color org.apache.poi.ss.usermodel.Color to set + * @since POI 5.2.3 + */ + default void setFillBackgroundColor(Color color) { + setFillBackgroundColor(color, false); + } + + /** + * Set the background fill color. + * Uses a {@link org.apache.poi.ss.usermodel.Color} instead of an indexed color. * * @param color org.apache.poi.ss.usermodel.Color to set + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @since POI 5.2.3 */ - void setFillBackgroundColor(Color color); + void setFillBackgroundColor(Color color, boolean ignoreInvalidColors); /** * get the background fill color, if the fill @@ -344,13 +357,26 @@ public interface CellStyle { void setFillForegroundColor(short bg); /** - * set the foreground fill color. - * use not a indexed color but a {@link org.apache.poi.ss.usermodel.Color) + * Set the foreground fill color. + * Uses a {@link org.apache.poi.ss.usermodel.Color} instead of an indexed color. + * + * @param color org.apache.poi.ss.usermodel.Color to set + * @since POI 5.2.3 + */ + default void setFillForegroundColor(Color color) { + setFillForegroundColor(color, false); + } + + /** + * Set the foreground fill color. + * Uses a {@link org.apache.poi.ss.usermodel.Color} instead of an indexed color. * * @param color org.apache.poi.ss.usermodel.Color to set + * @param ignoreInvalidColors when set to true, the method will ignore issues like trying to set a + * HSSFColor on a XSSFCellStyle * @since POI 5.2.3 */ - void setFillForegroundColor(Color color); + void setFillForegroundColor(Color color, boolean ignoreInvalidColors); /** * get the foreground fill color, if the fill diff --git a/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java b/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java index 0665cefa38..8bab37d4da 100644 --- a/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java +++ b/poi/src/main/java/org/apache/poi/ss/util/CellUtil.java @@ -532,8 +532,8 @@ public final class CellUtil { style.setFillForegroundColor(getShort(properties, FILL_FOREGROUND_COLOR)); style.setFillBackgroundColor(getShort(properties, FILL_BACKGROUND_COLOR)); - style.setFillForegroundColor(getColor(properties, FILL_FOREGROUND_COLOR_COLOR)); - style.setFillBackgroundColor(getColor(properties, FILL_BACKGROUND_COLOR_COLOR)); + style.setFillForegroundColor(getColor(properties, FILL_FOREGROUND_COLOR_COLOR), true); + style.setFillBackgroundColor(getColor(properties, FILL_BACKGROUND_COLOR_COLOR), true); style.setFont(workbook.getFontAt(getInt(properties, FONT))); style.setHidden(getBoolean(properties, HIDDEN));