POI表格读取,实现了对日期和数值的自动判断
程序员文章站
2024-02-24 14:39:52
...
表格读取,实现了对日期和数值的自动判断,由于这是,框架自带的bug,通过查看其源码,发现给文件设置格式可以解决问题,所以在表格模板文件里面给日期列设置了格式,解决了这个难题
要实现自动判断,需要做两个工作,一个是给日期列添加格式,选中某一列,右击,设置单元格格式,默认的是数字标签,下边有一个分类,点击日期并选择英文日期格式。然后就可以在代码里边这样判断:HSSFDateUtil.isCellDateFormatted(cell)
private static String getCellValue(XSSFCell cell)
{
// DecimalFormat df = new DecimalFormat("#.#");
String cellValue = null;
if (cell == null) return null;
switch (cell.getCellType())
{
case HSSFCell.CELL_TYPE_NUMERIC :
if (HSSFDateUtil.isCellDateFormatted(cell))
{
// 需要对日期这一列进行设置样式,否则无法识别是日期类型还是数值类型
// 默认不支持中文日期类型,需要设置成纯英语日期类型,不要包含年月日等汉字
// 最好是使用这种格式 2019/10/10 0:00
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
cellValue = sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
break;
}
// cellValue = df.format(cell.getNumericCellValue());
String v=String.format("%.4f",cell.getNumericCellValue()); //默认的整数后边是一个小数点,和一个零
cellValue=(v).replaceAll("\\.0*$","");//整数作为浮点数格式化以后,删除结尾的点零
break;
case HSSFCell.CELL_TYPE_STRING :
cellValue = String.valueOf(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA ://XSSFCell.getCTCell()
cellValue = cell.getCTCell().getV();//.getCachedFormulaResultType();//String.valueOf(cell..getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK :
cellValue = null;
break;
case HSSFCell.CELL_TYPE_BOOLEAN :
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR :
cellValue = String.valueOf(cell.getErrorCellValue());
break;
}
if (cellValue != null && cellValue.trim().length() <= 0)
{
cellValue = null;
}
return cellValue;
}
上一篇: https站点调用wcf的问题解决
下一篇: 用Python解决爱因斯坦数学题