row.getCell(0).getStringCellValue() 异常

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、文本格式的单元格左上角有一个绿色小三角形的提示符(若没有,可以设置:点击“工具——选项——错误检查”,在“数字以文本形式存储”前面打上勾,按确定),而数字单元格则没有绿色小三角形。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javafanwk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值