码迷,mamicode.com
首页 > 其他好文 > 详细

使用poi读取excel时,getRow()方法返回null

时间:2016-05-04 19:10:14      阅读:1123      评论:0      收藏:0      [点我收藏+]

标签:

新人一枚,说说今天在工作上遇到的问题。

由于工作需要,在做一个下载excel文件的功能时,要求读取服务器上的模板文件写入数据,然后再传输到客户端。我刚工作没多久,而且因为某些原因接触到的技术太少,所以就用读取模板上的标题与从数据库中取的的数据进行关联,然后写入,如果有更好的方法,请赐教。

写完测试的时候遇到了一个问题,就是模板上第一行标题行有数据,但是用getRow()方法取到的Row却为null,懵逼了,查了好久查不出来,百度也搜不到,最后跟自己写的另一个相似的方法对比,原因找出来了!不能使用SXSSFWorkbook读取excel数据,要用XSSFWorkbook读取数据!

原来的代码是:

File test = new File("D:\\test.xlsx");
try {
  XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(test));
  SXSSFWorkbook workbook = new SXSSFWorkbook(wb);
  Sheet sheet = workbook.getSheetAt(0);
  for (int i = 0; i < 5; i++) {
    Row row = sheet.getRow(i);
    if(row==null){
      System.out.println(i+":null");
    }
  }
} catch (Exception e) {
  e.printStackTrace();
}

最终控制台输出的结果为:

技术分享

将sheet对象的获取改为wb.getSheetAt(0)之后,就能正常获得row了。

技术分享
File test = new File("D:\\test.xlsx");
try {
    XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(test));
//    SXSSFWorkbook workbook = new SXSSFWorkbook(wb);
    Sheet sheet = wb.getSheetAt(0);
    for (int i = 0; i < 5; i++) {
        Row row = sheet.getRow(i);
        if(row==null){
            System.out.println(i+":null");
        }
    }
} catch (Exception e) {
            e.printStackTrace();
}
View Code

输出的结果为:

技术分享

我不知道为什么会出现这种情况,如果有知道的朋友,希望指导一下。

使用poi读取excel时,getRow()方法返回null

标签:

原文地址:http://www.cnblogs.com/study-room/p/5459363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!