首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP 導入 .xls 遇到 NullPointerException 排查指南

     編輯:程式設計綜合問答

問題現象

在 JSP 頁面上傳並導入 .xls 檔案時,瀏覽器拋出 java.lang.NullPointerException,堆疊追蹤指向 import_005ferror_jsp.java:298,且控制台無進一步反應。完整堆疊如下:

java.lang.NullPointerException
 at org.apache.jsp.jsp.cssc.import_005ferror_jsp._jspService(import_005ferror_jsp.java:298)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 ...

根因分析

日誌顯示異常發生在 JSP 編譯後的 Servlet 第 298 行,通常是因為在處理導入資料時,某個物件為 null 卻嘗試呼叫其方法或存取屬性。常見原因包括:

  • Excel 中某欄位為空值,但後續程式碼假設該欄位必填(如直接 cell.getStringCellValue() 未判斷 null)。
  • POI 解析時 Row 或 Cell 物件為 null(空白行、合併儲存格)。
  • 檔案上傳組件未正確取得 InputStream,導致解析器接收到空流。

排查步驟

  1. 定位具體行號:在 IDE 中打開對應的 JSP 檔案,找到第 298 行(或附近)程式碼,確認是哪個物件為 null。
  2. 加入防禦性檢查:對所有從 Excel 讀取的 Cell、Row 進行 null 判斷,並處理空值情況。
    Row row = sheet.getRow(i);
    if (row == null) continue;
    Cell cell = row.getCell(j);
    String value = (cell != null) ? cell.toString().trim() : "";
  3. 驗證檔案格式:確認上傳的 .xls 為真正的 Excel 97-2003 格式,而非 .xlsx 或 CSV 偽裝。
  4. 使用除錯器:在本地環境設定斷點,逐步追蹤變數值,觀察何時出現 null。

最佳實踐建議

  • 改用 Apache POI 的 DataFormatter 統一取得儲存格字串,自動處理各類型與空值。
  • 將解析邏輯移出 JSP,放入 Service 層或 Utility 類,降低視圖層複雜度。
  • 導入前先預覽前幾行資料,讓使用者確認格式正確再正式匯入。

若問題持續,請提供完整的 JSP 關鍵程式碼片段(特別是第 298 行附近)以便進一步協助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved