您的位置:首页 > 编程语言 > Java开发

java Excel POI导入,获得Cell值

2016-07-15 17:35 399 查看
获得excel中的常规的值, 日期类型和数字类型需要稍作注意。

日期类型需要判断不同格式进行转换,不支持自定义格式;

数字类型需要用到org.apache.poi.ss.util.NumberToTextConverter.toText进行转换,获得准确的值;

/**
* 根据excel单元格类型获取excel单元格值
* @param cell
* @return
*/
private String getCellValue(Cell cell) {
String cellvalue = "";
if (cell != null) {
// 判断当前Cell的Type
switch (cell.getCellType()) {
// 如果当前Cell的Type为NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC: {
short format = cell.getCellStyle().getDataFormat();
if(format == 14 || format == 31 || format == 57 || format == 58){ //excel中的时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
double value = cell.getNumericCellValue();
Date date = DateUtil.getJavaDate(value);
cellvalue = sdf.format(date);
}
// 判断当前的cell是否为Date
else if (HSSFDateUtil.isCellDateFormatted(cell)) { //先注释日期类型的转换,在实际测试中发现HSSFDateUtil.isCellDateFormatted(cell)只识别2014/02/02这种格式。
// 如果是Date类型则,取得该Cell的Date值 // 对2014-02-02格式识别不出是日期格式
Date date = cell.getDateCellValue();
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
cellvalue= formater.format(date);
} else { // 如果是纯数字
// 取得当前Cell的数值
cellvalue = NumberToTextConverter.toText(cell.getNumericCellValue());

}
break;
}
// 如果当前Cell的Type为STRIN
case HSSFCell.CELL_TYPE_STRING:
// 取得当前的Cell字符串
cellvalue = cell.getStringCellValue().replaceAll("'", "''");
break;
case HSSFCell.CELL_TYPE_BLANK:
cellvalue = null;
break;
// 默认的Cell值
default:{
cellvalue = " ";
}
}
} else {
cellvalue = "";
}
return cellvalue;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel poi getcellvalue