1. 程式人生 > 其它 >NPOI遇到的錯誤及其解決過程

NPOI遇到的錯誤及其解決過程

檔案流

1、Invalid header signature; read System.Char[], expected System.Char[] - Your file appears not to be a valid OLE2 document

發生錯誤的程式碼:

using FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);//根據path建立或者開啟檔案流

await file.CopyToAsync(fileStream);//非同步地將上傳檔案的內容複製到檔案流。

//獲取檔名稱字尾

string fileExtension = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1);

//二進位制轉WorkBook

IWorkbook workbook = fileExtension == "xls" ? new HSSFWorkbook(fileStream) : new XSSFWorkbook(fileStream);

更改後的程式碼:

using FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);//根據path建立或者開啟檔案流

await file.CopyToAsync(fileStream);//非同步地將上傳檔案的內容複製到檔案流。

fileStream.Seek(0, SeekOrigin.Begin);

//獲取檔名稱字尾

string fileExtension = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1);

//二進位制轉WorkBook

IWorkbook workbook = fileExtension == "xls" ? new HSSFWorkbook(fileStream) : new XSSFWorkbook(fileStream);

增加fileStream.Seek(0, SeekOrigin.Begin);這行程式碼後即可解決。

Seek方法是用於檔案指標跳轉位置,可以讀取流的內容。

2、FileStream的示例1

示例2

先建立一個閱讀用的流,根據NPOI的類IWorkbook進行excel內容的編輯。

編輯完成後新建一個FileStream儲存檔案流,用來儲存excel到本地。

重點:一定要先寫入FileSteam再關閉ReadSteam,否則寫入時會死迴圈報錯。