2013-10-10 84 views
4

我得到這個錯誤試圖打開使用Excel.ExcelReaderFactory(http://exceldatareader.codeplex.com/Excel.ExcelReaderFactory無法打開某些文件

一些的XLS文件
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 

excelReader.IsFirstRowAsColumnNames = false; 
DataSet spreadsheetDocument = excelReader.AsDataSet(); 

Error: Neither stream 'Workbook' nor 'Book' was found in file

錯誤occures當你調用CreateBinaryReader

某些文件可以100%工作,但其他文件會提供此例外。有沒有人有任何想法?在其網站上

類似的問題(http://exceldatareader.codeplex.com/discussions/461766

+0

我做了一個可行的文件,並且沒有文件之間進行比較。不起作用的文件在底部有以下權限:Crystal Decisions Powered by Crystal –

+0

在論壇中發佈您的問題是明智的 – Rohit

+0

謝謝 - 我也會這麼做 –

回答

2

這是http://exceldatareader.codeplex.com/discussions/461766#post1113133想我會在這裏發佈:

同樣的問題,同樣的異常與水晶報表xls文件。 這是因爲'Excel數據讀取器'將塊字符串定義爲「工作簿」和「書」,而將Crystal Report定義爲「工作簿」:您必須執行不區分大小寫的比較!

開放 「的Excel \核心\ BinaryFormat \ XlsRootDirectory.cs」 並替換線75

if (e.EntryName == EntryName) 

if (string.Equals(e.EntryName, EntryName, StringComparison.CurrentCultureIgnoreCase)) 

對我來說解決。

有一個愉快的一天, 馬爾科

+2

現在獲取新的異常:BIFF流錯誤:緩衝區大小小於條目長度。在XlsBiffRecord.cs中的第32行 –

+3

添加ReadOption.Loose到CreateBinaryReader參數_excelReader = ExcelReaderFactory.CreateBinaryReader(stream,ReadOption.Loose);現在它工作100% –