解决方案 »
- socket连接tomcat问题
- orm里的集合属性初始化问题
- 急求高手帮忙解决问题呀,struts标签的问题,大家速度帮下忙呀!
- 一个疑惑的问题
- 发送邮件乱码问题(敬候解决者)
- 问个面向对象思想的问题
- 请高手帮忙解决问题----严重: Exception starting filter encodingFilter
- 急啊!!!!
- 这样一个hibernate映射问题,请问如何解决?
- 关于HibernateDaoSupport中this.getHibernateTemplate().update的问题
- jsp如何开发在网页上播放视频的功能,在手机上能看。在线等!!!!
- flex4 如何获得折线图上的值
switch (cellType)
{
case Cell.CELL_TYPE_BOOLEAN:
case Cell.CELL_TYPE_NUMERIC:
case Cell.CELL_TYPE_STRING:
case Cell.CELL_TYPE_FORMULA:
case Cell.CELL_TYPE_BLANK:
case Cell.CELL_TYPE_ERROR:
default:
}
Date d = cell.getDateCellValue();
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
data = formater.format(d);
}else{
NumberFormat f=new DecimalFormat("############");
data = (f.format((dataCell.getNumericCellValue()))+"").trim();
}
但是不知道2007中与2003HSSFDateUtil对应的类是哪个?没有XSSFDateUtil
你看07有没
只是07的类是XSSF打头
03的是HSSF打头用的
类不同。代码基本一样
但是没找到 07中与03中HSSFDateUtil对应的类。
想直接用用03的方法试试
但是03的HSSFDateUtil.isCellDateFormatted(cell)
需要的是HSSFCell类型的参数
07中用的单元格对象是XSSFCell类型 又不知道怎么强转。
网上找了好久都没找到才来csdn上找强人帮助。。
坐等啊。。我现在项目就差这一点点了
POI里全用Stringvalue 读
上述方法07和03是一样的
但是excel中 日期时间 和数字一样 也是数字类型 Cell.CELL_TYPE_NUMERIC
但是判断出是Cell.CELL_TYPE_NUMERIC 类型后03中还要用
HSSFDateUtil.isCellDateFormatted(cell) 此是方法来判断是不是时间类型
具体情况我在三楼已经说过。
而07中找不到有判断是不是时间的方法
请解决问题的人最好能自己先实践下,不要粘贴了事。。
07应该有对应的方法吧。。我没找到。。
Java代码
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
double d = cell.getNumericCellValue();
Date date = HSSFDateUtil.getJavaDate(d);
} 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);
}
} 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)这个方法。
还需要判断一下:
if(DateUtil.isCellDateFormatted(cell)){
k = new DataFormatter().formatRawCellContents(cell.getNumericCellValue(), 0, "yyyy-mm-dd");// 格式化日期
}else{
k=cell.getNumericCellValue()+"";
}
break;完整代码请看我的博客:http://blog.163.com/aishu_55