mirror of https://github.com/apache/poi.git
pulled *Cell.setCellValue(double) to the common base
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1852253 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
70b4b88a3a
commit
5da229797f
|
@ -50,7 +50,6 @@ import org.apache.poi.ss.usermodel.Comment;
|
|||
import org.apache.poi.ss.usermodel.FormulaError;
|
||||
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||
import org.apache.poi.ss.usermodel.RichTextString;
|
||||
import org.apache.poi.ss.util.CellAddress;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.ss.util.NumberToTextConverter;
|
||||
|
@ -420,31 +419,18 @@ public class HSSFCell extends CellBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* set a numeric value for the cell
|
||||
*
|
||||
* @param value the numeric value to set this cell to. For formulas we'll set the
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@SuppressWarnings("fallthrough")
|
||||
@Override
|
||||
public void setCellValue(double value) {
|
||||
if(Double.isInfinite(value)) {
|
||||
// Excel does not support positive/negative infinities,
|
||||
// rather, it gives a #DIV/0! error in these cases.
|
||||
setCellErrorValue(FormulaError.DIV0.getCode());
|
||||
} else if (Double.isNaN(value)){
|
||||
// Excel does not support Not-a-Number (NaN),
|
||||
// instead it immediately generates a #NUM! error.
|
||||
setCellErrorValue(FormulaError.NUM.getCode());
|
||||
} else {
|
||||
int row=_record.getRow();
|
||||
short col=_record.getColumn();
|
||||
short styleIndex=_record.getXFIndex();
|
||||
|
||||
@SuppressWarnings("fallthrough")
|
||||
protected void setCellValueImpl(double value) {
|
||||
switch (_cellType) {
|
||||
default:
|
||||
setCellType(CellType.NUMERIC, false, row, col, styleIndex);
|
||||
setCellType(CellType.NUMERIC,
|
||||
false,
|
||||
_record.getRow(),
|
||||
_record.getColumn(),
|
||||
_record.getXFIndex());
|
||||
// fall through
|
||||
case NUMERIC:
|
||||
((NumberRecord)_record).setValue(value);
|
||||
|
@ -455,8 +441,6 @@ public class HSSFCell extends CellBase {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as
|
||||
* a date.
|
||||
|
|
|
@ -145,6 +145,7 @@ public interface Cell {
|
|||
* {@link CellType#BOOLEAN}, {@link CellType#ERROR}) depending
|
||||
* on the cached value of the formula
|
||||
* @since POI 3.15 beta 3
|
||||
* @deprecated will be removed in 4.2
|
||||
* Will be renamed to <code>getCachedFormulaResultType()</code> when we make the CellType enum transition in POI 4.0. See bug 59791.
|
||||
*/
|
||||
@Deprecated
|
||||
|
@ -152,7 +153,7 @@ public interface Cell {
|
|||
CellType getCachedFormulaResultTypeEnum();
|
||||
|
||||
/**
|
||||
* Set a numeric value for the cell
|
||||
* Set a numeric value for the cell.
|
||||
*
|
||||
* @param value the numeric value to set this cell to. For formulas we'll set the
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
|
|
|
@ -188,4 +188,29 @@ public abstract class CellBase implements Cell {
|
|||
tryToDeleteArrayFormula(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public final void setCellValue(double value) {
|
||||
if(Double.isInfinite(value)) {
|
||||
// Excel does not support positive/negative infinities,
|
||||
// rather, it gives a #DIV/0! error in these cases.
|
||||
setCellErrorValue(FormulaError.DIV0.getCode());
|
||||
} else if (Double.isNaN(value)){
|
||||
setCellErrorValue(FormulaError.NUM.getCode());
|
||||
} else {
|
||||
setCellValueImpl(value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation-specific way to set a numeric value.
|
||||
* <code>value</code> is guaranteed to be a valid (non-NaN) double.
|
||||
* The implementation is expected to adjust the cell type accordingly, so that after this call
|
||||
* getCellType() or getCachedFormulaResultType() would return {@link CellType#NUMERIC}.
|
||||
* @param value the new value to set
|
||||
*/
|
||||
protected abstract void setCellValueImpl(double value);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@ import org.apache.poi.ss.usermodel.FormulaError;
|
|||
import org.apache.poi.ss.usermodel.Hyperlink;
|
||||
import org.apache.poi.ss.usermodel.RichTextString;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.util.CellAddress;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.util.*;
|
||||
|
@ -159,26 +158,14 @@ public class SXSSFCell extends CellBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Set a numeric value for the cell
|
||||
*
|
||||
* @param value the numeric value to set this cell to. For formulas we'll set the
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(double value)
|
||||
{
|
||||
if(Double.isInfinite(value)) {
|
||||
// Excel does not support positive/negative infinities,
|
||||
// rather, it gives a #DIV/0! error in these cases.
|
||||
setCellErrorValue(FormulaError.DIV0.getCode());
|
||||
} else if (Double.isNaN(value)){
|
||||
setCellErrorValue(FormulaError.NUM.getCode());
|
||||
} else {
|
||||
public void setCellValueImpl(double value) {
|
||||
ensureTypeOrFormulaType(CellType.NUMERIC);
|
||||
if(_value.getType()==CellType.FORMULA)
|
||||
if(_value.getType() == CellType.FORMULA) {
|
||||
((NumericFormulaValue) _value).setPreEvaluatedValue(value);
|
||||
else
|
||||
} else {
|
||||
((NumericValue)_value).setValue(value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -311,31 +311,14 @@ public final class XSSFCell extends CellBase {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set a numeric value for the cell
|
||||
*
|
||||
* @param value the numeric value to set this cell to. For formulas we'll set the
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(double value) {
|
||||
if(Double.isInfinite(value)) {
|
||||
// Excel does not support positive/negative infinities,
|
||||
// rather, it gives a #DIV/0! error in these cases.
|
||||
_cell.setT(STCellType.E);
|
||||
_cell.setV(FormulaError.DIV0.getString());
|
||||
} else if (Double.isNaN(value)){
|
||||
// Excel does not support Not-a-Number (NaN),
|
||||
// instead it immediately generates an #NUM! error.
|
||||
_cell.setT(STCellType.E);
|
||||
_cell.setV(FormulaError.NUM.getString());
|
||||
} else {
|
||||
public void setCellValueImpl(double value) {
|
||||
_cell.setT(STCellType.N);
|
||||
_cell.setV(String.valueOf(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of the cell as a string
|
||||
|
|
Loading…
Reference in New Issue