Java读Excel的方法。

来源:互联网 发布:淘宝实名认证小号出售 编辑:程序博客网 时间:2024/06/05 04:30

在最近的一个项目中用户要求把原来的历史数据导入到新的系统中,我们用Java为用户开发的系统,用户提供的数据格式为Excel文件。于是, 我想到了使用apache的POI,因为以前使用过,觉得还可以,先做了个测试,感觉没什么问题,但是在导入另外一个文件时出错了,系统捕获一个javaCastException.引发这一异常的原因是由于java.util.TreeMap进行类型比较时出现的错误,由于POI时开发源代码的,于是我跟踪了代码出错的位置,发现是POI一个内部的错误,并且这个BUG已经提交到了apache的bugzilla中了。导致这个异常的原因是由于,客户提供的Excel文件是由原来的一个系统中通过程序生成的Excel文件,所以在读的时候由于文件头的错误而造成的。本来想试着自己改一下的,但是时间太紧就改变了主意,决定使用另外一个库,在sourceforge中找到了jxl。试用了一下,还是不错的,虽然在读那个比较特殊的文件时出现了警告,但是并不影响读出数据的准确性。下面我把实现的方法记下来。

import java.io.File;
import java.util.Date;
import jxl.*;
import jxl.read.biff.*;
import java.io.*;

public class testjeapi {
  public testjeapi() {
    try {
      Workbook workbook = Workbook.getWorkbook(new File("C:/TEMP/ehc.XLS"));
      Sheet sheet = workbook.getSheet(0);
      int rows=sheet.getRows();
      for(int i=1;i<rows;i++){
         String cbxmdm=sheet.getCell(0,i).getContents();
         String cbxmmc=sheet.getCell(1,i).getContents();
      //   String jfsl=sheet.getCell(7,i).getContents().replaceAll(",","");
//System.out.println("jfsl:"+jfsl);
         NumberCell n=(NumberCell)sheet.getCell(7,i);//NumberCell用于读取数字格式的单元格。
         System.out.println("n:"+n.getValue());
         Double d=new Double(n.getValue());
         System.out.println("d:"+d);
        // System.out.println("cell format:"+sheet.getCell(7,i).getType());
//         String jfsl=sheet.getCell(7,i).getContents();
//         String jfje=NumberCell.getCell(8,i).getContents();
//         Double dfsl=new Double(NumberCell.getCell(9,i).getContents());
//         String dfje=sheet.getCell(10,i).getContents();
//         System.out.println(i+"|cbxmdm:"+cbxmdm+"|"+"cbxmmc:"+cbxmmc+"|"+"jfsl:"+jfsl+"|"+"jfje:"+jfje+"|dfsl:"+dfsl+"|dfje:"+dfje);

      }
    }
    catch (BiffException ex) {
      ex.printStackTrace();
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }

  }
  public static void main(String[] args) {
    testjeapi testjeapi1 = new testjeapi();
  }

}

原创粉丝点击