12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /* ====================================================================
- 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.
-
- 2012 - Alfresco Software, Ltd.
- Alfresco Software has modified source of this file
- The details of changes as svn diff can be found in svn at location root/projects/3rd-party/src
- ==================================================================== */
- package org.apache.poi.ss.usermodel;
-
- import java.util.List;
-
- import org.apache.poi.ss.formula.ConditionalFormattingEvaluator;
- import org.apache.poi.ss.formula.EvaluationConditionalFormatRule;
-
- /**
- * Object to hold a number format index and string, for various formatting evaluations
- */
- public class ExcelNumberFormat {
-
- private final int idx;
- private final String format;
-
- /**
- * @return null if the style is null, instance from style data format values otherwise
- */
- public static ExcelNumberFormat from(CellStyle style) {
- if (style == null) return null;
- return new ExcelNumberFormat(style.getDataFormat(), style.getDataFormatString());
- }
-
- /**
- * @param cell cell to extract format from
- * @param cfEvaluator ConditionalFormattingEvaluator to use, or null if none in this context
- * @return number format from highest-priority rule with a number format, or the cell style, or null if none of the above apply/are defined
- */
- public static ExcelNumberFormat from(Cell cell, ConditionalFormattingEvaluator cfEvaluator) {
- if (cell == null) return null;
-
- ExcelNumberFormat nf = null;
-
- if (cfEvaluator != null) {
- // first one wins (priority order, per Excel help)
- List<EvaluationConditionalFormatRule> rules = cfEvaluator.getConditionalFormattingForCell(cell);
- for (EvaluationConditionalFormatRule rule : rules) {
- nf = rule.getNumberFormat();
- if (nf != null) break;
- }
- }
- if (nf == null) {
- CellStyle style = cell.getCellStyle();
- nf = ExcelNumberFormat.from(style);
- }
- return nf;
- }
-
- /**
- * Use this carefully, prefer factory methods to ensure id/format relationships are not broken or confused.
- * Left public so {@link ConditionalFormattingRule#getNumberFormat()} implementations can use it.
- * @param idx Excel number format index, either a built-in or a higher custom # mapped in the workbook style table
- * @param format Excel number format string for the index
- */
- public ExcelNumberFormat(int idx, String format) {
- this.idx = idx;
- this.format = format;
- }
-
-
-
- /**
- *
- * @return Excel number format index, either a built-in or a higher custom # mapped in the workbook style table
- */
- public int getIdx() {
- return idx;
- }
-
- /**
- *
- * @return Excel number format string for the index
- */
- public String getFormat() {
- return format;
- }
- }
|