JexcelApi和POI导入Excel日期识别成数字的解决方案
来源:互联网 发布:帝国cms文章模板 编辑:程序博客网 时间:2024/05/17 00:09
用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的问题。日期格式的单元格有些会识别成数字单元格。(为什么说有些呢?因为在Excel文件中输入2008-3-18的日期可以正确导入,但是输入3-18的就会识别成数字。)关于这个问题我找了很久,都没有找到解答。现在解决了,所以记录以下,一是怕以后忘了,二是希望遇到这个问题的朋友可以少走弯路。
首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。
有两种方式可以辨别NUMERIC Cell储存的是否是日期:
方法一:如果用的是POI,可以直接用HSSFDateUtil.isCellDateFormatted(cell)这个方法。
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
double d = cell.getNumericCellValue();
Date date = HSSFDateUtil.getJavaDate(d);
}
方法二:如果用的是Jxl,可以将cell.getCellFormat 强制转换成 XFRecord。然后判断XFRecord.formatIndex 如果等于 58就是DateCell。
Java代码
if (cell.getType() == CellType.NUMBER) {
NumberCell nc = (NumberCell) cell;
XFRecord xfr = (XFRecord) nc.getCellFormat();
final int INDEX_OF_DATE = 58;
if(xfr.formatIndex == INDEX_OF_DATE) {
Date date = HSSFDateUtil.getJavaDate(nc.getValue());
content = dateformat.format(date);
}
}
得到的这个double不能直接拿来用。转换可以用HSSFDateUtil.getJavaDate(double date)这个方法。
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- 通用的POI导入Excel解决方案
- java使用JexcelApi和POI两种方法操作excel
- Java操作Excel的2种方法--Poi,jExcelApi
- poi 读取excel 的问题 日期和数值会有问题的解决方案
- poi导入excel中的日期字段
- POI导入和导出Excel
- Excel导入,数字+文本,文本无法识别的解决方案
- Java POI Excel的导入
- POI导出excel的解决方案
- JXL和POI读取Excel日期的处理
- POI实现Java程序进行Excel的读取和导入
- Java的poi技术读取和导入Excel
- java的poi技术读取和导入Excel
- XP硬盘读写速度很慢的解决方法
- VMware Workstation 9.0.2 Build 1031769 完整汉化注册版
- 程序员的七个坏习惯
- LevelDb日知录之七:读取记录
- 大学所做项目总结
- JexcelApi和POI导入Excel日期识别成数字的解决方案
- [工作问题总结]window.open导致IE自动关闭问题总结[2]
- android开源----下拉刷新RefreshableListView
- Android:如何自定义标题栏
- 偶数与质数
- mongodb资料
- 八一八招聘的那些事儿
- linux学习
- 一个晚上的自习