Excel中cell的内容可能是纯数字,可能是字符,可根据不同的方法来获取值。
对于纯数字,可用getNumericCellValue()获取
对于字符,可用getStringCellValue()获取
也可用setCellType(HSSFCell.CELL_TYPE_STRING)统一将cell中的内容当做字符串
但是这个方法过期了暂时没有找到替换的方法,可以用用
// 将区域编号的cell中的内容当做字符串处理
row.getCell(0).setCellType(HSSFCell.CELL_TYPE_STRING);
或者用getCellType()获取类型,再根据不同类型调用不同的方法来获取内容
private static Object getCellValue(Cell cell) {
Object value = null;
DecimalFormat df = new DecimalFormat("0");//格式化number String字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//日期格式化
switch (cell.getCellTypeEnum()) {
case STRING:
value = cell.getRichStringCellValue().getString();
break;
case NUMERIC:
if("General".equals(cell.getCellStyle().getDataFormatString())){
value = df.format(cell.getNumericCellValue());
}else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){
value = sdf.format(cell.getDateCellValue());
}else{
value = df.format(cell.getNumericCellValue());
}
break;
case BOOLEAN:
value = cell.getBooleanCellValue();
break;
case BLANK:
value = "";
break;
default:
value = cell.toString();
break;
}
return value;
}
此外:
EXCEL 常规 文本 数值 日期
常规的话就是由EXCEL来判断,比如输入数字其实就是数值,输入文本就是文本,输入1/2这样的就自动认为是日期型,而变成1月2日。
“数值格式”与“文本格式”的区别就在于一个是数字,而后者是文本字符,数字可以直接参与计算,而文本字符大多数需进行数值处理后才能参与计算。
而数字格式如果输入大于11位数,则会显示为科学计数法。如果输入001,则显示为1。所以如果出现这两种情况,最好把它们设置为文本格式,才能正常显示。
Excel中,当你输入数字时,Excel默认的是当作数字处理,但当你输入数字时前面加英文输入状态下的单引号‘,如“ ‘2 ”时,则这个2就会当作文本处理,或者将单元格选设置为文本格式后再输入数字,这也会当作文本处理。
您可以操作试一下,可以看到数字和文本的显示会有所不同:
1、默认状态下,文本格式单元格是左对齐,数字单元格是右对齐;
2、文本格式的单元格左上角有一个绿色小三角形的提示符(若没有,可以设置:点击“工具——选项——错误检查”,在“数字以文本形式存储”前面打上勾,按确定),而数字单元格则没有绿色小三角形。