我有以下代码
public boolean processCell(boolean hasData, StringBuffer rowData, Cell cell)
{
switch (cell.getCellType())
{
case Cell.CELL_TYPE_FORMULA:
{
try
{
this.evaluator.clearAllCachedResultValues();
switch (this.evaluator.evaluateFormulaCell(cell))
{
case XSSFCell.CELL_TYPE_NUMERIC:
{
if (DateUtil.isCellDateFormatted(cell))
{
logger.warn(cell.getCellFormula());
rowData.append(dateFormat.format(cell.getDateCellValue()));
hasData = true;
}
else
{
rowData.append(numberFormat.format(cell.getNumericCellValue()));
hasData = true;
}
break;
}
case XSSFCell.CELL_TYPE_STRING:
{
String stringVal = cell.getStringCellValue().trim().replaceAll("\n", "");
if (stringVal.trim().equalsIgnoreCase("Total MoU/active customer"))
{
logger.warn("Last - KPI ::" + stringVal);
this.finalRecord = true;
}
rowData.append(stringVal);
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_BOOLEAN:
{
rowData.append(cell.getBooleanCellValue());
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_ERROR:
{
int eval = cell.getErrorCellValue();
if (eval == DIVIDE_BY_ZERO)
rowData.append("0");
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_BLANK:
{
rowData.append("");
hasData = true;
break;
}
}
}
catch (java.lang.IllegalArgumentException e)
{
logger.error(" Formula [ " + (cell.getRowIndex() + 1) + "," + (cell.getColumnIndex() + 1) + " ] "
+ e.getMessage());
rowData.append("CellError");
this.STATUS = FAILURE;
hasData = true;
break;
}
catch (java.lang.IllegalStateException e)
{
logger.error(" Formula [ " + (cell.getRowIndex() + 1) + "," + (cell.getColumnIndex() + 1) + " ] "
+ e.getMessage());
rowData.append("CellError");
this.STATUS = FAILURE;
hasData = true;
break;
}
catch (java.lang.RuntimeException e)
{
this.STATUS = FAILURE;
logger.error(" Formula [ " + (cell.getRowIndex() + 1) + "," + (cell.getColumnIndex() + 1) + " ] "
+ e.getMessage());
rowData.append("MissingFileError");
hasData = true;
break;
}
break;
}
case XSSFCell.CELL_TYPE_BLANK:
{
rowData.append("");
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_NUMERIC:
{
if (DateUtil.isCellDateFormatted(cell))
{
rowData.append(dateFormat.format(cell.getDateCellValue()));
hasData = true;
}
else
{
rowData.append(numberFormat.format(cell.getNumericCellValue()));
hasData = true;
}
break;
}
// Formula evaluation ends here
case XSSFCell.CELL_TYPE_STRING:
{
String stringVal = cell.getStringCellValue().trim().replaceAll("\n", "");
if (stringVal.trim().equalsIgnoreCase("Total MoU/active customer"))
{
logger.warn("Last - KPI ::" + stringVal);
this.finalRecord = true;
;
}
rowData.append(stringVal);
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_ERROR:
{
int eval = cell.getErrorCellValue();
if (eval == DIVIDE_BY_ZERO)
rowData.append("0");
hasData = true;
break;
}
case XSSFCell.CELL_TYPE_BOOLEAN:
{
rowData.append(cell.getBooleanCellValue());
hasData = true;
break;
}
}
rowData.append(FIELD_SEPARATOR);
return hasData;
}
当我运行程序时。在日期列中,我有一系列日期。没有公式的最后一个日期是 31/12/2009 它的单元格引用 oj 在 excel 表中的 oj+1 我有 1/1/2010 但在 excel 表中我得到了 29/04/2009 我已经在这个单元格上打印了公式并找到出 poi 3.6 对此有错误的单元格引用。而不是 oj+1 它给 NE+1
请帮我解决问题