- 浏览: 88973 次
- 性别:
- 来自: 厦门
最新评论
-
zhengyong7232:
SELECT t.province,DECODE(landsc ...
列转行 -
meepo3927:
不是特么很懂
列转行
用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的问题。日期格式的单元格有些会识别成数字单元格。(为什么说有些呢?因为在Excel文件中输入2008-3-18的日期可以正确导入,但是输入3-18的就会识别成数字。)关于这个问题我找了很久,都没有找到解答。现在解决了,所以记录以下,一是怕以后忘了,二是希望遇到这个问题的朋友可以少走弯路。
首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。
有两种方式可以辨别NUMERIC Cell储存的是否是日期:
方法一:如果用的是POI,可以直接用HSSFDateUtil.isCellDateFormatted(cell)这个方法。
Java代码
1.case HSSFCell.CELL_TYPE_NUMERIC:
2. if (HSSFDateUtil.isCellDateFormatted(cell)) {
3. double d = cell.getNumericCellValue();
4. Date date = HSSFDateUtil.getJavaDate(d);
5. }
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代码
1.if (cell.getType() == CellType.NUMBER) {
2. NumberCell nc = (NumberCell) cell;
3. XFRecord xfr = (XFRecord) nc.getCellFormat();
4. final int INDEX_OF_DATE = 58;
5. if(xfr.formatIndex == INDEX_OF_DATE) {
6. Date date = HSSFDateUtil.getJavaDate(nc.getValue());
7. content = dateformat.format(date);
8. }
9.}
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)这个方法。
转自:http://poplaryy.iteye.com/blog/173390
首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。
有两种方式可以辨别NUMERIC Cell储存的是否是日期:
方法一:如果用的是POI,可以直接用HSSFDateUtil.isCellDateFormatted(cell)这个方法。
Java代码
1.case HSSFCell.CELL_TYPE_NUMERIC:
2. if (HSSFDateUtil.isCellDateFormatted(cell)) {
3. double d = cell.getNumericCellValue();
4. Date date = HSSFDateUtil.getJavaDate(d);
5. }
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代码
1.if (cell.getType() == CellType.NUMBER) {
2. NumberCell nc = (NumberCell) cell;
3. XFRecord xfr = (XFRecord) nc.getCellFormat();
4. final int INDEX_OF_DATE = 58;
5. if(xfr.formatIndex == INDEX_OF_DATE) {
6. Date date = HSSFDateUtil.getJavaDate(nc.getValue());
7. content = dateformat.format(date);
8. }
9.}
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)这个方法。
转自:http://poplaryy.iteye.com/blog/173390
发表评论
-
最小生成树之Kruskal算法
2013-12-15 00:54 1086这篇文章实现最小生成树的Kruskal算法Kruskal算 ... -
排序算法--插入排序
2013-12-15 00:47 1064插入排序原理:假设 ... -
poi创建下拉框
2013-04-16 19:01 0package finance.tools.salesper ... -
Spring中Transactional配置
2013-04-11 20:43 1001Spring中Transactional配置 标签: 杂谈 分 ... -
Hibernate将Enum枚举类型映射为Int类型 .
2013-04-09 16:46 1537最近要用Hibernate做一个枚举类型的映射,在MySQL ... -
Hibernate 更灵活的用法 HibernateCallback
2013-01-22 14:41 1432在项目中用Hibernate的DetachedCriter ... -
spring源代码分析(2)--BeanFactory
2013-01-20 12:38 1430我们首先来看下BeanFacroty接口 pa ... -
spring源代码分析(1)--Resource的分析
2013-01-20 12:22 4043我们知道,在spring中,配置文件是通过资源形式加载的, ... -
DefaultListableBeanFactory研究
2013-01-18 10:49 5907DefaultSingletonBeanRegistry完 ... -
jvm的内存调优
2013-01-11 15:54 8621) 堆 运行时数 ... -
struts2中Action的name 和package的name和namespace是什么作用
2013-01-02 12:16 9635在struts2的 struts.xml 配置中 例: ... -
深入探索 高效的Java异常处理框架
2012-10-22 14:09 913摘要:本文从Java异常最基本的概念、语法开始讲述了Java异 ... -
JAVA对ArrayList排序
2012-10-16 21:53 16519java如何对ArrayList中对象按照该对象某属性排序 ... -
ThreadPoolExecutor使用和思考(中)-keepAliveTime及拒绝策略
2012-09-11 00:48 956工作中多处接触到了ThreadPoolExecutor。趁着现 ... -
ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
2012-09-11 00:45 1651工作中多处接触到了ThreadPoolExecutor。趁着现 ... -
Spring IOC之BeanFactory
2012-09-10 12:39 1311BeanFactory ,作为 Spring 基础的 IoC ... -
Java5 并发学习
2012-09-10 11:33 819在Java5之后 ... -
Spring对事务管理的支持的发展历程(基础篇
2012-08-31 17:43 939Connection conn = DataS ... -
CXF ,在Client端用于把 Date 类型转换成 XMLGregorianCalendar .
2012-08-31 16:54 1655import javax.xml.datatype.Datat ... -
《Spring技术内幕》学习笔记10——Web环境中Spring的启动过程
2012-07-30 09:04 10021.Spring 不但可以在 JavaSE 环境中应用,在 W ...
相关推荐
JExcelAPI与Apache POI两者对比
Java中的Apache POI库是用于读取和写入Microsoft Office格式文件,特别是Excel文档的流行工具。然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿...
利用JExcelApi来动态生成excel文档利用JExcelApi来动态生成excel文档
4. **使用高效库**:选择合适的库(如Apache POI、JExcelApi等)进行Excel操作可以显著提升性能。不同的库有不同的性能特征,例如,Apache POI提供流式API(SXSSF)来处理大型文件,可以减少内存需求。 5. **预处理...
在Android平台上,使用Apache POI库来读取Excel文件是一种常见的解决方案。Apache POI是一个流行的开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在这个“android ...
Java中的Excel操作主要依赖于第三方库,如JExcelApi(也称为jxl),这是一个非常流行的API,用于读取和写入Microsoft Excel文件。在本文中,我们将深入探讨如何使用JExcelApi进行Java中的Excel导入与导出。 首先,...
### POI导入Word文档与图片的关键技术点 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件(如 .doc、.xls 和 .ppt)的 Java API。本文档将详细介绍如何使用 POI 库来读取 Word 文档(包括 ....
Java POI 导入导出Excel简单实例源代码,下载即可运行测试,测试地址: http://localhost:8080/com.fengking.Excel/export 操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI。这里我们用Apache...
1. **文件读取**:jExcelAPI能够读取Excel文件的单元格数据,包括文本、数字、日期等类型,也可以读取公式和样式信息。 2. **文件写入**:除了读取,它还支持创建新的Excel文件或向现有文件添加数据。可以设置...
"jexcelapi.zip_java项目excel导入导出jar包"提供了这样的功能,使得Java开发者能够轻松地与Excel文件交互。 jExcelAPI是一个开源的Java库,它允许开发者读取、创建和修改Microsoft Excel文件,而无需依赖于...
POI与其他Office文档处理库,例如Apache OpenXML、JExcelApi等,具有不同的特点和优缺点。POI的优点是它可以操作多种Office文档格式,且提供了一个通用的API。然而,POI的文档支持还不够完善,需要用户自行实现一些...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在Java环境中,如果你需要使用Apache POI库来读取、写入或操作Excel文件,你首先需要将对应的JAR包添加到你的项目...
使用Apache POI和JExcelAPI时,需要注意性能和内存管理。由于Android设备的资源限制,大量处理Excel文件可能会导致内存溢出。因此,最好采用流式处理或分批读取数据,避免一次性加载整个文件。此外,考虑到兼容性...
Apache POI是Java领域中广泛使用的库,专为处理Microsoft Office格式的文件而设计,特别是Excel文档。这个库使得在不依赖Microsoft Office的情况下,开发者能够读取、创建、修改和操作XLS、XLSX等Excel文件。在本文...
1. 数据类型转换:Excel中的数据类型可能与数据库中的不一致,如日期、数字等,需要进行适当的转换。 2. 错误处理:处理可能出现的异常,如文件不存在、数据库连接失败、SQL执行错误等。 3. 性能优化:如果数据量...
Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件。下面将详细阐述这两个库以及如何使用它们来生成Excel报表。 Apache POI 是一个...
综上所述,Excel的导入导出涉及到的IT知识点包括使用Apache POI和JExcelApi处理Excel文件的技巧,以及如何构建实用的工具类来简化这些操作。了解并掌握这些知识,对于提升数据处理和自动化能力具有重要意义。
1. **读取Excel文件**:可以读取Excel文件的单元格内容,包括文本、数字、日期等类型的数据,还可以获取工作表的名称、行数、列数等信息。 2. **写入Excel文件**:允许开发者创建新的Excel文件或者向已有的文件中...
总之,Apache POI和相关库为Java开发人员提供了强大的工具,使他们能够在不依赖于Microsoft Office的情况下,有效地处理Excel文件,特别是进行大规模的数据导入操作。通过合理利用这些库,开发者可以轻松地实现从...
本主题将详细讲解如何使用Apache POI和JExcelApi(JXL)这两个Java库来读取Excel文件,以及提供的工具类`PoiUtil.java`和`JxlUtil.java`的使用方法。 Apache POI是一个流行的开源库,它允许开发者创建、修改和显示...