Class CellFormat
- java.lang.Object
-
- org.apache.poi.ss.format.CellFormat
-
public class CellFormat extends Object
Format a value according to the standard Excel behavior. This "standard" is not explicitly documented by Microsoft, so the behavior is determined by experimentation; see the tests.An Excel format has up to four parts, separated by semicolons. Each part specifies what to do with particular kinds of values, depending on the number of parts given:
- One part (example:
[Green]#.##
) - If the value is a number, display according to this one part (example: green text, with up to two decimal points). If the value is text, display it as is.
- Two parts (example:
[Green]#.##;[Red]#.##
) - If the value is a positive number or zero, display according to the first part (example: green text, with up to two decimal points); if it is a negative number, display according to the second part (example: red text, with up to two decimal points). If the value is text, display it as is.
- Three parts (example:
[Green]#.##;[Black]#.##;[Red]#.##
) - If the value is a positive number, display according to the first part (example: green text, with up to two decimal points); if it is zero, display according to the second part (example: black text, with up to two decimal points); if it is a negative number, display according to the third part (example: red text, with up to two decimal points). If the value is text, display it as is.
- Four parts (example:
[Green]#.##;[Black]#.##;[Red]#.##;[@]
) - If the value is a positive number, display according to the first part (example: green text, with up to two decimal points); if it is zero, display according to the second part (example: black text, with up to two decimal points); if it is a negative number, display according to the third part (example: red text, with up to two decimal points). If the value is text, display according to the fourth part (example: text in the cell's usual color, with the text value surround by brackets).
A given format part may specify a given Locale, by including something like
[$$-409]
or[$£-809]
or[$-40C]
. These are (currently) largely ignored. You can useDateFormatConverter
to look these up into Java Locales if desired.In addition to these, there is a general format that is used when no format is specified. TODO Merge this with
DataFormatter
so we only have one set of code for formatting numbers. TODO Re-use parts of this logic withConditionalFormatting
/ConditionalFormattingRule
for reporting stylings which do/don't apply TODO Support the full set of modifiers, including alternate calendars and native character numbers, as documented at https://help.libreoffice.org/Common/Number_Format_Codes - One part (example:
-
-
Constructor Summary
Constructors Constructor Description CellFormat(Locale locale, String format)
Creates a new object.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CellFormatResult
apply(Object value)
Returns the result of applying the format to the given value.CellFormatResult
apply(Object value, int cellWidth)
Returns the result of applying the format to the given value.CellFormatResult
apply(JLabel label, Object value)
Uses the result of applying this format to the value, setting the text and color of a label before returning the result.CellFormatResult
apply(JLabel label, Cell c)
Fetches the appropriate value from the cell, and uses the result, setting the text and color of a label before returning the result.CellFormatResult
apply(Cell c)
Fetches the appropriate value from the cell, and returns the result of applying it to the appropriate format.boolean
equals(Object obj)
Returnstrue
if the other object is a CellFormat object with the same format.int
getFormatPartCount()
static CellFormat
getInstance(String format)
Returns a CellFormat that applies the given format.static CellFormat
getInstance(Locale locale, String format)
Returns a CellFormat that applies the given format.CellFormatPart
getNegNumFmt()
CellFormatPart
getPosNumFmt()
CellFormatPart
getTextFmt()
CellFormatPart
getZeroNumFmt()
int
hashCode()
Returns a hash code for the format.boolean
isApplicableDateFormat(Double value)
static CellType
ultimateType(Cell cell)
Returns the ultimate cell type, following the results of formulas.
-
-
-
Method Detail
-
getInstance
public static CellFormat getInstance(String format)
Returns a CellFormat that applies the given format. Two calls with the same format may or may not return the same object.- Parameters:
format
- The format.- Returns:
- A CellFormat that applies the given format.
-
getInstance
public static CellFormat getInstance(Locale locale, String format)
Returns a CellFormat that applies the given format. Two calls with the same format may or may not return the same object.- Parameters:
locale
- The locale.format
- The format.- Returns:
- A CellFormat that applies the given format.
-
apply
public CellFormatResult apply(Object value)
Returns the result of applying the format to the given value. If the value is a number (a type ofNumber
object), the correct number format type is chosen; otherwise it is considered a text object.- Parameters:
value
- The value- Returns:
- The result, in a
CellFormatResult
.
-
apply
public CellFormatResult apply(Cell c)
Fetches the appropriate value from the cell, and returns the result of applying it to the appropriate format. For formula cells, the computed value is what is used.- Parameters:
c
- The cell.- Returns:
- The result, in a
CellFormatResult
.
-
apply
public CellFormatResult apply(JLabel label, Object value)
Uses the result of applying this format to the value, setting the text and color of a label before returning the result.- Parameters:
label
- The label to apply to.value
- The value to process.- Returns:
- The result, in a
CellFormatResult
.
-
apply
public CellFormatResult apply(JLabel label, Cell c)
Fetches the appropriate value from the cell, and uses the result, setting the text and color of a label before returning the result.- Parameters:
label
- The label to apply to.c
- The cell.- Returns:
- The result, in a
CellFormatResult
.
-
ultimateType
public static CellType ultimateType(Cell cell)
Returns the ultimate cell type, following the results of formulas. If the cell is aCellType.FORMULA
, this returns the result ofCell.getCachedFormulaResultType()
. Otherwise this returns the result ofCell.getCellType()
.- Parameters:
cell
- The cell.- Returns:
- The ultimate type of this cell.
-
equals
public boolean equals(Object obj)
Returnstrue
if the other object is a CellFormat object with the same format.
-
hashCode
public int hashCode()
Returns a hash code for the format.
-
apply
public CellFormatResult apply(Object value, int cellWidth)
Returns the result of applying the format to the given value. If the value is a number (a type ofNumber
object), the correct number format type is chosen; otherwise it is considered a text object.- Parameters:
value
- The value- Returns:
- The result, in a
CellFormatResult
.
-
isApplicableDateFormat
public boolean isApplicableDateFormat(Double value)
-
getPosNumFmt
public CellFormatPart getPosNumFmt()
-
getZeroNumFmt
public CellFormatPart getZeroNumFmt()
-
getNegNumFmt
public CellFormatPart getNegNumFmt()
-
getTextFmt
public CellFormatPart getTextFmt()
-
getFormatPartCount
public int getFormatPartCount()
-
-