使用poi讀取excel時,getRow()方法返回null


新人一枚,說說今天在工作上遇到的問題。

由於工作需要,在做一個下載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

輸出的結果為:

我不知道為什么會出現這種情況,如果有知道的朋友,希望指導一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM