git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1852254 13f79535-47bb-0310-9956-ffa450edef68pull/142/head
} | } | ||||
/** | /** | ||||
* set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||||
* a date. | |||||
* {@inheritDoc} | |||||
* | * | ||||
* @param value the date 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. | |||||
* <p>In HSSF, only the number of days is stored. The fractional part is ignored.</p> | |||||
* @see HSSFDateUtil | |||||
* @see org.apache.poi.ss.usermodel.DateUtil | |||||
*/ | */ | ||||
public void setCellValue(Date value) | |||||
{ | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
protected void setCellValueImpl(Date value) { | |||||
setCellValue(HSSFDateUtil.getExcelDate(value, _book.getWorkbook().isUsing1904DateWindowing())); | setCellValue(HSSFDateUtil.getExcelDate(value, _book.getWorkbook().isUsing1904DateWindowing())); | ||||
} | } | ||||
/** | /** | ||||
* set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||||
* a date. | |||||
* | |||||
* This will set the cell value based on the Calendar's timezone. As Excel | |||||
* does not support timezones this means that both 20:00+03:00 and | |||||
* 20:00-03:00 will be reported as the same value (20:00) even that there | |||||
* are 6 hours difference between the two times. This difference can be | |||||
* preserved by using <code>setCellValue(value.getTime())</code> which will | |||||
* automatically shift the times to the default timezone. | |||||
* | |||||
* @param value the date value to set this cell to. For formulas we'll set the | |||||
* precalculated value, for numerics we'll set its value. For othertypes we | |||||
* will change the cell to a numeric cell and set its value. | |||||
* {@inheritDoc} | |||||
*/ | */ | ||||
public void setCellValue(Calendar value) | |||||
{ | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
@Override | |||||
protected void setCellValueImpl(Calendar value) { | |||||
setCellValue( HSSFDateUtil.getExcelDate(value, _book.getWorkbook().isUsing1904DateWindowing()) ); | setCellValue( HSSFDateUtil.getExcelDate(value, _book.getWorkbook().isUsing1904DateWindowing()) ); | ||||
} | } | ||||
import org.apache.poi.ss.util.CellReference; | import org.apache.poi.ss.util.CellReference; | ||||
import org.apache.poi.util.Removal; | import org.apache.poi.util.Removal; | ||||
import java.util.Calendar; | |||||
import java.util.Date; | |||||
/** | /** | ||||
* Common implementation-independent logic shared by all implementations of {@link Cell}. | * Common implementation-independent logic shared by all implementations of {@link Cell}. | ||||
* @author Vladislav "gallon" Galas gallon at apache dot org | * @author Vladislav "gallon" Galas gallon at apache dot org | ||||
* @param value the new value to set | * @param value the new value to set | ||||
*/ | */ | ||||
protected abstract void setCellValueImpl(double value); | protected abstract void setCellValueImpl(double value); | ||||
@Override | |||||
public void setCellValue(Date value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
setCellValueImpl(value); | |||||
} | |||||
/** | |||||
* Implementation-specific way to set a date value. | |||||
* <code>value</code> is guaranteed to be non-null. | |||||
* 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 date to set | |||||
*/ | |||||
protected abstract void setCellValueImpl(Date value); | |||||
/** | |||||
* {@inheritDoc} | |||||
*/ | |||||
@Override | |||||
public final void setCellValue(Calendar value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
setCellValueImpl(value); | |||||
} | |||||
/** | |||||
* Implementation-specific way to set a calendar value. | |||||
* <code>value</code> is guaranteed to be non-null. | |||||
* 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 calendar value to set | |||||
*/ | |||||
protected abstract void setCellValueImpl(Calendar value); | |||||
} | } |
} | } | ||||
/** | /** | ||||
* Converts the supplied date to its equivalent Excel numeric value and sets | |||||
* that into the cell. | |||||
* <p> | |||||
* <b>Note</b> - There is actually no 'DATE' cell type in Excel. In many | |||||
* cases (when entering date values), Excel automatically adjusts the | |||||
* <i>cell style</i> to some date format, creating the illusion that the cell | |||||
* data type is now something besides {@link CellType#NUMERIC}. POI | |||||
* does not attempt to replicate this behaviour. To make a numeric cell | |||||
* display as a date, use {@link #setCellStyle(CellStyle)} etc. | |||||
* | |||||
* @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 numerics cell and set its value. | |||||
* {@inheritDoc} | |||||
*/ | */ | ||||
@Override | @Override | ||||
public void setCellValue(Date value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
protected void setCellValueImpl(Date value) { | |||||
boolean date1904 = getSheet().getWorkbook().isDate1904(); | boolean date1904 = getSheet().getWorkbook().isDate1904(); | ||||
setCellValue(DateUtil.getExcelDate(value, date1904)); | setCellValue(DateUtil.getExcelDate(value, date1904)); | ||||
} | } | ||||
/** | /** | ||||
* Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||||
* a date. | |||||
* <p> | |||||
* This will set the cell value based on the Calendar's timezone. As Excel | |||||
* does not support timezones this means that both 20:00+03:00 and | |||||
* 20:00-03:00 will be reported as the same value (20:00) even that there | |||||
* are 6 hours difference between the two times. This difference can be | |||||
* preserved by using <code>setCellValue(value.getTime())</code> which will | |||||
* automatically shift the times to the default timezone. | |||||
* </p> | |||||
* | |||||
* @param value the date value to set this cell to. For formulas we'll set the | |||||
* precalculated value, for numerics we'll set its value. For othertypes we | |||||
* will change the cell to a numeric cell and set its value. | |||||
* {@inheritDoc} | |||||
*/ | */ | ||||
@Override | @Override | ||||
public void setCellValue(Calendar value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
protected void setCellValueImpl(Calendar value) { | |||||
boolean date1904 = getSheet().getWorkbook().isDate1904(); | boolean date1904 = getSheet().getWorkbook().isDate1904(); | ||||
setCellValue( DateUtil.getExcelDate(value, date1904 )); | setCellValue( DateUtil.getExcelDate(value, date1904 )); | ||||
} | } |
} | } | ||||
/** | /** | ||||
* Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||||
* a date. | |||||
* | |||||
* @param value the date 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 | @Override | ||||
public void setCellValue(Date value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
protected void setCellValueImpl(Date value) { | |||||
boolean date1904 = getSheet().getWorkbook().isDate1904(); | boolean date1904 = getSheet().getWorkbook().isDate1904(); | ||||
setCellValue(DateUtil.getExcelDate(value, date1904)); | setCellValue(DateUtil.getExcelDate(value, date1904)); | ||||
} | } | ||||
/** | /** | ||||
* Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as | |||||
* a date. | |||||
* <p> | |||||
* This will set the cell value based on the Calendar's timezone. As Excel | |||||
* does not support timezones this means that both 20:00+03:00 and | |||||
* 20:00-03:00 will be reported as the same value (20:00) even that there | |||||
* are 6 hours difference between the two times. This difference can be | |||||
* preserved by using <code>setCellValue(value.getTime())</code> which will | |||||
* automatically shift the times to the default timezone. | |||||
* </p> | |||||
* | |||||
* @param value the date value to set this cell to. For formulas we'll set the | |||||
* precalculated value, for numerics we'll set its value. For othertypes we | |||||
* will change the cell to a numeric cell and set its value. | |||||
* {@inheritDoc} | |||||
*/ | */ | ||||
@Override | @Override | ||||
public void setCellValue(Calendar value) { | |||||
if(value == null) { | |||||
setBlank(); | |||||
return; | |||||
} | |||||
protected void setCellValueImpl(Calendar value) { | |||||
boolean date1904 = getSheet().getWorkbook().isDate1904(); | boolean date1904 = getSheet().getWorkbook().isDate1904(); | ||||
setCellValue( DateUtil.getExcelDate(value, date1904 )); | setCellValue( DateUtil.getExcelDate(value, date1904 )); | ||||
} | } |