poi解析excel读取日期为数字的问题
Apache poi 版本:3.12
今天在用poi解析excel文件时,碰到一个蛋疼的问题。
在我的excel文件中有一列是日期类型,例如有以下这么一行数据(日期中月份前面的0会自动去掉):
在读取注册日期这个数据时,返回了一串数字,变成了 42149,
断点调试到读取数据的代码,发现poi是正确识别的,但是在读取具体数据时发生了变化:
从上图可以看到,poi把日期数据也归类为 Cell.CELL_TYPE_NUMERIC
数字类型,
并且在cell中是正确读取到了 2015-05-25,但是在使用cell.getNumericCellValue()
方法获取时却发生了变化,返回了42149.0
,
不知道它在里面进行了怎样的处理,但这不是我们想要的结果。
既然如此,我直接用字符串的方式获取可不可以呢?
把代码改为:
- case Cell.CELL_TYPE_NUMERIC:
- value = cell.getStringCellValue();
- DecimalFormat df = new DecimalFormat("0");
- value = df.format(value);
- break;
抛出如下异常:
- Caused by: java.lang.IllegalStateException: Cannot get a text value from a numeric cell
- at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:888)
- at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:310)
- at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:261)
说明不可以把它当作字符串类型来处理,
看方法倒是有个cell.getDateCellValue()
,可是在什么时候进行调用呢,我要怎么能知道它是date类型?
通过查询资料发现,poi在Cell.CELL_TYPE_NUMERIC
中又具体区分了类型,Date
类型就是其中一种,把代码再做处理:
- case Cell.CELL_TYPE_NUMERIC:
- if (HSSFDateUtil.isCellDateFormatted(cell)) {
- Date date = cell.getDateCellValue();
- value = DateFormatUtils.format(date, "yyyy-MM-dd");
- } else {
- value = cell.getNumericCellValue();
- DecimalFormat df = new DecimalFormat("0");
- value = df.format(value);
- }
- break;
成功解决问题。
另外如果日期中有精确到日,精确到秒不同精度的,可以用cell.getCellStyle().getDataFormat()
或cell.getCellStyle().getDataFormatString()
来获取格式。
- 日期变数字
- EXCEL
- POI
poi解析excel读取日期为数字的问题相关推荐
- poi导入excel日期处理_poi解析excel读取日期为数字的问题
Apache poi 版本:3.12 今天在用poi解析excel文件时,碰到一个蛋疼的问题. 在我的excel文件中有一列是日期类型,例如有以下这么一行数据(日期中月份前面的0会自动去掉): 在读取 ...
- poi读取Excel时日期为数字 的解决方法
在使用poi解析Excel文件时,会发现,表格中的日期解析出来是一个数字,如下: 这是Excel表格的截图: 这是poi解析出来的这个日期的结果: 我们期望这个日期解析出来是:2015/8/21,而结 ...
- python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题
excel 文件内容如下: 读取excel内容: import xlrd from datetime import datetime from xlrd import xldate_as_dateti ...
- POI解析Excel表格
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 这里实现poi解析Excel表格的例子,导入Exc ...
- 【poi-3.8】poi解析excel插入数据库详解
文章目录 poi解析excel&插入数据库详解 说明 一.目的 二.准备工作 三.思路分析 四.流程图分析 五.核心代码 1:上传文件 2:获取输入流 3:初始化excel表 4:遍历行和列 ...
- Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据 一.资源 什么是Apache POI Apache POI 不同类型的数据的表格(xls) 链接: ...
- ssh excel 导入 mysql_ssh poi解析excel并将数据存入数据库
做完了一个报表导入数据库 功能 遇到几个问题:一 .Poi解析excel 的两种格式 xls xlsx. 二.form表单上传使用ajax 三.excel 单元格中有公式存在普通的读取方式读到的是公式 ...
- 为什么poi解析Excel慢?
我们项目用xlsx配置业务数据,每个项目中会有500~600张表,解析耗时1分多钟. 尝试改成csv后,解析耗时5~6秒. 这不禁让我陷入思考,都是文本数据,为什么poi解析Excel会这么慢? 带着 ...
- springboot + poi 解析 excel
Apache POI 是用 Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能. 本文使用 s ...
最新文章
- sublime如何实现函数折叠
- 解决MAVEN项目不扫描src下的mapper.xml文件
- UDP(socket)接和数据案例封装成C++代码
- mysql配置环境变量,进阶加薪全靠它!
- shell手册--笨鸟杰作
- paip.提升安全性-------用户口令密码的检测与生成
- Java 反编译工具哪家强?对比分析瞧一瞧
- 2.4GHz频段天线的选择
- 360浏览器怎么开java_360安全浏览器怎么打开javascript
- 图像去雾算法学习笔记1——何凯明博士基于暗通道先验的单幅图像去雾算法公式推导
- 服务器网口聚合操作文档,服务器网口聚合怎么操作
- 输入输出系统 ——I/O方式(程序查询、程序中断、DMA方式)
- MySQL基础 - 数据类型
- smzdm 扫地机器人_Dyson 360 EYE扫地机器人评测:这次的黑科技是否值得拥有?
- 【算法知识】先验分布、后验分布、似然估计
- Python 截取图片识别文字并翻译
- layui:图片上传
- 2.5 linux存储的基本管理
- 计算机卸载一个程序正确操作,卸载一个程序我在电脑里安装了一个一个山西省计算机考试系统21 爱问知识人...
- VeryCD的名言集锦