关于利用POI导出excel表,不做任何操作直接导入,读取数据失效的问题

一、背景
在项目开发中,经常会遇到导出数据到excel表和利用excel表批量导入数据的需求,最常用的是利用POI进行导出导入操作;

二、遇到的问题

这时候普遍会遇到一个问题:导出的excel表格,你不做任何操作,直接再把表格导进去,此时会获取不到表格里面的数据;
小知识:关于excel表的单元格,一般默认是常规,常规的意思就是:excel表会根据你输入的内容,来给单元格设置类型,以下是单元格的类型
在这里插入图片描述
当我们导出的时候,一般会调用 Cell.setCellType(CellType cellType),设置单元格的类型,比如我们这里设置String类型在这里插入图片描述

同时,当我们导入的时候,我们也要调用Cell.setCellType(CellType cellType)方法,为什么要调用呢,因为无论你用java代码把单元格设置成哪种格式,只要你对导出的excel表进行过任何操作,哪怕只是打开重新保存,单元格格式都会被设置成常规,如果不调用Cell.setCellType(CellType cellType)方法,那你在后端就接收不到数据;

那么,如果我不对导出的excel表进行任何操作,而是直接再导入,那么此时,你就不能调用Cell.setCellType(CellType cellType)方法,不然也会读取不到数据,直接调用此方法就能获取值;
在这里插入图片描述
但这又会出现一个问题,如果你不知道导入的表是有没有做过修改,此时你可以在读取数据前做一个判断,如果获取到的CellType跟你导出设置的时候不一样,那么证明此excel表格被修改过,因此获取值的时候,要先调用Cell.setCellType(CellType cellType)方法;如果获取的值不一样,证明此excel未被修改,直接获取值就行;

在这里插入图片描述

PS:单元格类型如图
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值