2008-07-20 13:18:07 -04:00
|
|
|
/* ====================================================================
|
|
|
|
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.hssf.usermodel;
|
|
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.text.Format;
|
2010-01-26 11:21:17 -05:00
|
|
|
import java.util.Locale;
|
2009-08-17 22:41:45 -04:00
|
|
|
|
|
|
|
import org.apache.poi.ss.usermodel.DataFormatter;
|
2015-09-07 16:19:50 -04:00
|
|
|
import org.apache.poi.util.LocaleUtil;
|
2008-07-20 13:18:07 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* HSSFDataFormatter contains methods for formatting the value stored in an
|
|
|
|
* HSSFCell. This can be useful for reports and GUI presentations when you
|
|
|
|
* need to display data exactly as it appears in Excel. Supported formats
|
|
|
|
* include currency, SSN, percentages, decimals, dates, phone numbers, zip
|
|
|
|
* codes, etc.
|
|
|
|
* <p>
|
|
|
|
* Internally, formats will be implemented using subclasses of {@link Format}
|
2015-09-08 20:41:03 -04:00
|
|
|
* such as {@link DecimalFormat} and {@link java.text.SimpleDateFormat}. Therefore the
|
2008-07-20 13:18:07 -04:00
|
|
|
* formats used by this class must obey the same pattern rules as these Format
|
|
|
|
* subclasses. This means that only legal number pattern characters ("0", "#",
|
|
|
|
* ".", "," etc.) may appear in number formats. Other characters can be
|
|
|
|
* inserted <em>before</em> or <em> after</em> the number pattern to form a
|
|
|
|
* prefix or suffix.
|
|
|
|
* </p>
|
|
|
|
* <p>
|
|
|
|
* For example the Excel pattern <code>"$#,##0.00 "USD"_);($#,##0.00 "USD")"
|
|
|
|
* </code> will be correctly formatted as "$1,000.00 USD" or "($1,000.00 USD)".
|
|
|
|
* However the pattern <code>"00-00-00"</code> is incorrectly formatted by
|
|
|
|
* DecimalFormat as "000000--". For Excel formats that are not compatible with
|
|
|
|
* DecimalFormat, you can provide your own custom {@link Format} implementation
|
|
|
|
* via <code>HSSFDataFormatter.addFormat(String,Format)</code>. The following
|
|
|
|
* custom formats are already provided by this class:
|
|
|
|
* </p>
|
|
|
|
* <pre>
|
|
|
|
* <ul><li>SSN "000-00-0000"</li>
|
|
|
|
* <li>Phone Number "(###) ###-####"</li>
|
|
|
|
* <li>Zip plus 4 "00000-0000"</li>
|
|
|
|
* </ul>
|
|
|
|
* </pre>
|
|
|
|
* <p>
|
|
|
|
* If the Excel format pattern cannot be parsed successfully, then a default
|
|
|
|
* format will be used. The default number format will mimic the Excel General
|
|
|
|
* format: "#" for whole numbers and "#.##########" for decimal numbers. You
|
|
|
|
* can override the default format pattern with <code>
|
|
|
|
* HSSFDataFormatter.setDefaultNumberFormat(Format)</code>. <b>Note:</b> the
|
|
|
|
* default format will only be used when a Format cannot be created from the
|
2008-07-28 16:08:15 -04:00
|
|
|
* cell's data format string.
|
2008-07-20 13:18:07 -04:00
|
|
|
*/
|
2008-11-12 02:15:37 -05:00
|
|
|
public final class HSSFDataFormatter extends DataFormatter {
|
2008-07-28 16:08:15 -04:00
|
|
|
|
2010-01-26 11:21:17 -05:00
|
|
|
/**
|
|
|
|
* Creates a formatter using the given locale.
|
|
|
|
*/
|
|
|
|
public HSSFDataFormatter(Locale locale) {
|
|
|
|
super(locale);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a formatter using the {@link Locale#getDefault() default locale}.
|
|
|
|
*/
|
|
|
|
public HSSFDataFormatter() {
|
2015-09-07 16:19:50 -04:00
|
|
|
this(LocaleUtil.getUserLocale());
|
2010-01-26 11:21:17 -05:00
|
|
|
}
|
|
|
|
|
2008-07-20 13:18:07 -04:00
|
|
|
}
|