有没有哪位大哥对POI熟?

03-12-08 vivisu

我在读EXCEL的时候,对Date型处理老是不行,卡住了,没法往下走了,我的日期在EXCEL里面是以:年-月-日 表示的。

我的读取方法是按POI的faq里面提供的方法:

      
       case HSSFCell.CELL_TYPE_NUMERIC:
         double d = cell.getNumericCellValue();
         // test if a date!
         if (HSSFDateUtil.isCellDateFormatted(cell)) {
           // format in form of M/D/YY
           cal.setTime(HSSFDateUtil.getJavaDate(d));
           cellText =
             (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
           cellText = cal.get(Calendar.MONTH)+1 + "/" +
                      cal.get(Calendar.DAY_OF_MONTH) + "/" +
                      cellText;
         } 
<p>

但是现在就是 HSSFDateUtil.isCellDateFormatted(cell)老是不能为真,不知道是为什么?

hyiner
2003-12-10 16:41

可能还不只你想的这些。我在用的过程中,发现POI对输入了数字的单元格,无论你怎么设定,它读出来都是数字,而且不足8位就自动加“.0”,8位以上变成了科学计数法,实在是很郁闷。这个bug我在POI的mailinglist里也看到了,据说是1.5就已经有了,到现在也没有解决。

我的办法是在程序中自己添了一些处理。

vivisu
2003-12-11 16:02

对啊,从里面EXCEL里面取出来的数值有小数的都会四舍五入变成双精度型,不能原样读出,不知道有没有办法?