用JXL获取的时间总是比Excel单元格实际填写的时间早八小时,例如
单元格中日期为“2009-9-10″,getDate得到的日期是“Thu Sep 10 08:00:00 CST 2009″;
单元格中日期为“2009-9-10 16:00:00″,getDate 得到的日期便是“Fri Sep 11 00:00:00 CST 2009″;
这种问题产生的原因 是JXL按照GMT时间来解析Excel单元格的时间,它始终认为被解析的单元格填写的时间 为格林威治时间,然后我们在本地getDate的时候会将格林威治时间转成本地时间,因此会相差8小时。
详见:jxl.read.biff.DateRecord.java类
private static final TimeZone gmtZone = TimeZone.getTimeZone("GMT");
1、首先在D盘建立一个xls表(tests.xls),在A1单元格随便填写一个日期,例如2010-4-11 0:00:00
2、测试类:
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.TimeZone;
import jxl.DateCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class JXLTest {
public static void main(String[] args) throws BiffException, IOException,ParseException {
Workbook workBook = Workbook.getWorkbook(new File("D:\\test.xls"));
Sheet sheet = workBook.getSheet(0);
DateCell cell = (DateCell) sheet.getCell(0, 0);
System.out.println("Get date by JXL:" + cell.getDate());
System.out.println("After converting,we can get the time we had writed-->"+ convertDate4JXL(cell.getDate()));
}
/**
* JXL中通过DateCell.getDate()获取单元格中的时间为(实际填写日期+8小时),原因是JXL是按照GMT时区来解析XML。
* 本方法用于获取单元格中实际填写的日期! 例如单元格中日期为“2009-9-10”,getDate得到的日期便是“Thu Sep 10 08:00:00 CST 2009”;
* 单元格中日期为“2009-9-10 16:00:00”,getDate得到的日期便是“Fri Sep 11 00:00:00 CST 2009”
* @author XHY
* @param jxlDate 通过DateCell.getDate()获取的时间
* @return
* @throws ParseException
*/
public static java.util.Date convertDate4JXL(java.util.Date jxlDate) throws ParseException {
if (jxlDate == null)
return null;
TimeZone gmt = TimeZone.getTimeZone("GMT");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.getDefault());
dateFormat.setTimeZone(gmt);
String str = dateFormat.format(jxlDate);
TimeZone local = TimeZone.getDefault();
dateFormat.setTimeZone(local);
return dateFormat.parse(str);
}
}
分享到:
相关推荐
Java通过POI和JXL给Excel动态添加水印.docxJava通过POI和JXL给Excel动态添加水印.docx
通过一个小例子了解jxl的读取,使用于java初学者。里面用到的包可以在CSDN下载得到。
JXL操作excel 字体 颜色 设置单元格 详解
jxl操作excel说明以及jxl jar包
这个例子介绍了如何使用jxl实现Excel的单元格自动缩小字体填充,而不是列的长度随单元格内容自动扩展,但是有一个缺点,jxl不支持图文格式的Excel展示。附件中有jxl的jar包,以及我调用的例子。欢迎大家下载。
jxl读取合并单元格
jxl导出excel加水印 WritableWorkbook、WritableSheet、WritableCellFormat
java jxl Excel 读写 合并单元格 下载 等实例
jxl对excel添加水印(含有setWaterMarkImage方法).zip
NULL 博文链接:https://yuanyuan7891.iteye.com/blog/656388
java_Jxl(导入导出Excel).pdf
jxl.jar 和 poi3.14.jar java Excel读写,jxl包无法解析xlsx格式文件
使用jxl解析excel固定模版(导入解析),本资源是以智联excel简历为例解析, 1:上传 2:临时存储,3:解析保存,4:删除临时资源关闭流
import jxl.Workbook; import jxl.format.Alignment; import jxl.format.VerticalAlignment; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write....
通过jxl操作excel,简单方便......................
jxl.jar是通过java操作excel表格的工具类库,开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。
java_Jxl(导入导出Excel)
java利用jxl工具包操作Excel文件.doc
java中通过jxl写excel文件并且设置excel字体样式、表格等