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,否則寫入時會死循環報錯。

 

 


免責聲明!

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



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