2017-05-12 14 views
0

私はNPOIを使ってexcel [xlsとxlsx]を読んでみようとしていますが、私は次のコードを使っていますが、 'Unable to Read header' 27バイト読み出し;予想される512バイト 'の間に8KBのxlsファイルを読むNPOIを使ってExcelを読む

byte[] byteArray = Encoding.UTF8.GetBytes(filepath); 
    MemoryStream stream = new MemoryStream(byteArray); 
    MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(filepath ?? "")); 

    NPOI.HSSF.UserModel.HSSFWorkbook hssfwb = default(HSSFWorkbook); 
    hssfwb = new NPOI.HSSF.UserModel.HSSFWorkbook(stream1); 
    Sheet sheet = hssfwb.GetSheetAt(0); 
    DataTable dtinputExcel = new DataTable(); 

私はこのエラーのためにネット上で利用可能なすべてのコードを試しました。 [xls/xlsx]を読んで、どのサイズのものであれ、エラーのない方法を教えてください。

+0

チェックファイルがoterプログラムで開いていない場合、あなたが代わりにファイルのロックを読み込むことができます:

はこのようにそれを試してみてください。 –

+0

私は上記のコードをExcelで読み込む前に、コードを使ってプロセスを閉じていますが、それでもエラーが出ます。 – Pratik

+0

このリンクを確認するhttps://stackoverflow.com/questions/5855813/npoi-how-to-read-file-using-npoi –

答えて

0

問題は、あなたがそれをファイルの名前を含むMemoryStreamを渡している間HSSFWorkbookのコンストラクタは、内容スプレッドシートファイルのを含むストリームを期待しているということです。ファイルを読み込んでそのストリームをHSSFWorkbookコンストラクタに渡すには、FileStreamを使用する必要があります。

IWorkbook hssfwb; 
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read)) 
{ 
    hssfwb = new HSSFWorkbook(fs); 
} 

ISheet sheet = hssfwb.GetSheetAt(0); 
関連する問題