poi实现Excel导入时出现格式错误

1.首先导入poi的相关依赖

      <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.8</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.8-beta4</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.8</version>
        </dependency>

2.当使用以下代码获取单元格的值时,可能出现数字转换成科学计数法形式

  private String getCellFormatValue(Cell cell) {

    String cellValue = "";
    if (cell != null) {
      switch (cell.getCellType()) {
        case NUMERIC:
          if (DateUtil.isCellDateFormatted(cell)) {
            Date date = cell.getDateCellValue();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            cellValue = sdf.format(date);
          } else {
//            cell.setCellType(CellType.STRING);
//            cellValue = cell.getStringCellValue();
            cellValue = String.valueOf(cell.getNumericCellValue());
//            cellValue= new DecimalFormat("0").format(cell.getNumericCellValue());

//            double d=cell.getNumericCellValue();
//            cellValue= new DecimalFormat("0").format(d);
            if (cellValue.endsWith(".0")) {
              cellValue = cellValue.replace(".0", "");
            }
          }
          break;
        case FORMULA:
        case STRING:
          cellValue = cell.getRichStringCellValue().getString();
          break;
        case BOOLEAN:
          boolean comment = cell.getBooleanCellValue();
          cellValue = comment ? "Y" : "N";
          break;
        default:
          cellValue = "";
      }
    }

例如当传入数字类型11134444时,可能变为1.1134444E7

3.对excel传入的值进行处理时,传入对应的java对象。当判断其长度时,需要判定String字符串是否为空,否则调用String.length()方法时会报异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值