From 5d580f48e61e72e8cb441721af04d8a30f737a65 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 30 Mar 2019 21:57:50 +0000 Subject: [PATCH] fix build issue git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1856649 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/DataFormatter.java | 8 ++--- .../poi/ss/usermodel/Date1904Support.java | 35 +++++++++++++++++++ .../poi/xssf/usermodel/XSSFWorkbook.java | 11 +++--- 3 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 src/java/org/apache/poi/ss/usermodel/Date1904Support.java diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index e01b336d81..15bbef0fbe 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -49,7 +49,6 @@ import org.apache.poi.ss.util.NumberToTextConverter; import org.apache.poi.util.LocaleUtil; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** @@ -311,10 +310,11 @@ public class DataFormatter implements Observer { } private boolean isDate1904(Cell cell) { - if (cell == null || ! (cell.getSheet().getWorkbook() instanceof XSSFWorkbook) ) { - return false; + if ( cell != null && cell.getSheet().getWorkbook() instanceof Date1904Support) { + return ((Date1904Support)cell.getSheet().getWorkbook()).isDate1904(); + } - return ((XSSFWorkbook) cell.getSheet().getWorkbook()).isDate1904(); + return false; } private Format getFormat(double cellValue, int formatIndex, String formatStrIn, boolean use1904Windowing) { diff --git a/src/java/org/apache/poi/ss/usermodel/Date1904Support.java b/src/java/org/apache/poi/ss/usermodel/Date1904Support.java new file mode 100644 index 0000000000..db9cdd3b69 --- /dev/null +++ b/src/java/org/apache/poi/ss/usermodel/Date1904Support.java @@ -0,0 +1,35 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.usermodel; + +import org.apache.poi.util.Internal; + +@Internal +public interface Date1904Support { + /** + * Gets a boolean value that indicates whether the date systems used in the workbook starts in 1904. + *

+ * The default value is false, meaning that the workbook uses the 1900 date system, + * where 1/1/1900 is the first day in the system. + * + * 1904 based dates are only supported in XSSF workbooks. + *

+ * @return true if the date systems used in the workbook starts in 1904 + */ + boolean isDate1904(); +} diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 160689247e..14ca6c97ea 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -67,12 +67,8 @@ import org.apache.poi.ss.formula.SheetNameFormatter; import org.apache.poi.ss.formula.udf.AggregatingUDFFinder; import org.apache.poi.ss.formula.udf.IndexedUDFFinder; import org.apache.poi.ss.formula.udf.UDFFinder; -import org.apache.poi.ss.usermodel.Name; -import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Row.MissingCellPolicy; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.SheetVisibility; -import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.util.WorkbookUtil; import org.apache.poi.util.Beta; @@ -119,7 +115,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument; * will construct whether they are reading or writing a workbook. It is also the * top level object for creating new sheets/etc. */ -public class XSSFWorkbook extends POIXMLDocument implements Workbook { +public class XSSFWorkbook extends POIXMLDocument implements Workbook, Date1904Support { private static final Pattern COMMA_PATTERN = Pattern.compile(","); /** @@ -1854,7 +1850,8 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook { * @return true if the date systems used in the workbook starts in 1904 */ @Internal - public boolean isDate1904(){ + @Override + public boolean isDate1904() { CTWorkbookPr workbookPr = workbook.getWorkbookPr(); return workbookPr != null && workbookPr.getDate1904(); } -- 2.39.5