做了個excel檔案匯入的功能,接收excel檔案流,先讀取檔案流頭部資訊確定檔案型別,然後呼叫poi方法
opcpackage pkg = opcpackage.open(inputstream)
根據報錯資訊來看,提示檔案流不是.xlsx檔案,但是上傳的檔案確實是.xlsx檔案。
原因:流不能被多次讀取,在讀取檔案流獲取頭部資訊後檔案流已經不能再讀取了,所以會提示「錯誤的檔案型別」
解決辦法:使用 bytearrayinputstream()快取流,可以進行多次讀取。
bytearrayoutputstream bos = new bytearrayoutputstream();
inputstream xlsxstream = new bytearrayinputstream(bos.tobytearray());
opcpackage.open(xlsxstream)
關於通過前端xslx解析excel日期少一天原因
關於通過前端xslx解析excel日期格式資料轉化問題以及自定義時間格式yyyy mm dd轉化 const workbook xlsx.read data,定義乙個轉換日期格式的方法 成日期格式 yyyy mm dd 注意的點 xlsx將excel中的時間內容解析後,會小一天 如2020 11 3...
poi讀取excel解析最常見的問題
excel儲存日期 時間均以數值型別進行儲存,讀取時poi先判斷是是否是數值型別,再進行判斷轉化 1 數值格式 cell type numeric 1.純數值格式 getnumericcellvalue 直接獲取資料 2.日期格式 處理yyyy mm dd,d m yyyy h mm,hh mm 等...
關於POI解析Excel遇到空行的問題
因為我們在錄入excel時如果直接按delete鍵刪除,poi會認為我們delete的這行是null,但是存在 那麼在讀取過程中,就會有行數干擾問題,導致報空指標異常 這裡我是這麼做的 int rowcount sheet.getlastrownum int rownums 0 這裡是去除 裡的空行...