剛進入公司開發,熟悉環境是個很大的難題,今天就接到了乙個任務,讓我修改批量上傳excel檔案的頁面.
公司採用的是apache提供的包,通過xml檔案的對映,把excel表和我們的model對應起來.本來是校驗正確的,結果莫名其妙到後面就會報空指標異常.
問題的原因:在沒有格式的前提下,getlastrownum方法能夠正確返回最後一行的位置;getphysicalnumberofrows方法能夠正確返回物理的行數;
* 在有格式的前提下,這兩個方法都是不合理的;
* 所以,在做匯入excel的時候,建議想要正確獲取行數,可以做乙個人為的約定,比如約定匯入檔案第一列不允許為空,行數就按照第一列的有效行數來統計;這樣就能正確獲取到實際想要的行數;
更新版本, 因為發現有時候 存在了加了樣式的邊框,邊框的屬性預設成為了 公式屬性,導致後面空指標,現已修復
修改版
/**
* 用來得到真實行數
*@param sheet
*@param flag 需要寫進資料庫的列數用逗號隔開 比如 (sheet sheet,int 2,int 3);隨意個
*@return
* */
public
static
intfindrealrows(sheet sheet, int... flag)
if (row.getcell(j) == null||row.getcell(j).getstringcellvalue().matches("^\\s+$")||row.getcell(j).getcelltype()>2)
blank.add(j);}}
system.out.println(s+"我");
// 如果4列都是空說明就該返回
if (total == flag.length) else
if (total == 0) else
throw
new busines***ception("第" + (i + 1) + "行" + h
+ "不能為空");}}
} catch (nullpointerexception e)
return row_real;
}
方法都這樣,通過約定乙個有的id來進行判斷,可以較快的得到真實的行數 ,以至於後面的集合迴圈輸出的話不會出現空指標異常 java 讀取Excel文件
workbook workbook null try 獲取工作表 workbook new workbook.getworkbook context.getresource web inf abc.xls getinputstream 獲取第乙個工作片 sheet sheet workbook.ge...
Java讀取Excel檔案
讀取的excel的格式為 姓名 年級 性別 張三 研一 女 李四 param filepath return list 第乙個list存sheet,第二個list存列。按照map取關鍵字 如 map 姓名 輸出為張 三 李四 throws exception public list readexce...
java讀取Excel內容
新增依賴 org.apache.poigroupid poiartifactid 3.16version dependency org.apache.poigroupid poi ooxmlartifactid 3.14version dependency net.sourceforge.jexce...