Internally, formats will be implemented using subclasses of {@link Format}such as {@link DecimalFormat} and {@link SimpleDateFormat}. Therefore the 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 before or after the number pattern to form a prefix or suffix.
For example the Excel pattern "$#,##0.00 "USD"_);($#,##0.00 "USD")"
will be correctly formatted as "$1,000.00 USD" or "($1,000.00 USD)". However the pattern "00-00-00"
is incorrectly formatted by DecimalFormat as "000000--". For Excel formats that are not compatible with DecimalFormat, you can provide your own custom {@link Format} implementationvia DataFormatter.addFormat(String,Format)
. The following custom formats are already provided by this class:
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 DataFormatter.setDefaultNumberFormat(Format)
. Note: the default format will only be used when a Format cannot be created from the cell's data format string.
Note that by default formatted numeric values are trimmed. Excel formats can contain spacers and padding and the default behavior is to strip them off.
Example:
Consider a numeric cell with a value 12.343
and format "##.##_ "
. The trailing underscore and space ("_ ") in the format adds a space to the end and Excel formats this cell as "12.34 "
, but DataFormatter
trims the formatted value and returns "12.34"
.
emulateCsv=true
flag in the DateFormatter
cosntructor. If set to true, then the output tries to conform to what you get when you take an xls or xlsx in Excel and Save As CSV file: DataFormatter
will output "0".
|
|
|
|
|
|
|
|
|
|
|
|