C# Excel.ExcelReaderFactory无法打开某些文件

C# Excel.ExcelReaderFactory无法打开某些文件,c#,excel,interop,C#,Excel,Interop,尝试使用Excel.ExcelReaderFactory()打开某些xls文件时出现此错误 错误:在文件中找不到流“工作簿”或“书本” 调用CreateBaryReader时发生错误 有些文件可以100%工作,但其他文件则给出了这个例外。有人有什么想法吗 在他们的网站上有类似的问题()这是我在这里发布的想法: crystal report xls文件存在相同的问题和异常。 这是因为“Excel数据读取器”将块字符串定义为“工作簿”和“书本”,而将Crystal Report定义为“工作簿”:您必

尝试使用Excel.ExcelReaderFactory()打开某些xls文件时出现此错误

错误:在文件中找不到流“工作簿”或“书本”

调用CreateBaryReader时发生错误

有些文件可以100%工作,但其他文件则给出了这个例外。有人有什么想法吗

在他们的网站上有类似的问题()

这是我在这里发布的想法:

crystal report xls文件存在相同的问题和异常。 这是因为“Excel数据读取器”将块字符串定义为“工作簿”和“书本”,而将Crystal Report定义为“工作簿”:您必须进行不区分大小写的比较

打开“Excel\Core\BinaryFormat\XlsRootDirectory.cs”并替换第75行

if (e.EntryName == EntryName)

对我来说,它解决了

祝你今天愉快,
marco

我对一个有效的文件和一个无效的文件进行了比较。不起作用的文件在底部有以下内容:Crystal支持的Crystal Decisions将明智地将您的问题发布在讨论中谢谢-我也会这样做-您是否有导致问题的文件和代码示例?我添加了代码-此问题是否可以解除关注?现在获得一个新的异常:BIFF Stream错误:缓冲区大小小于条目长度。在XlsBiffRecord.cs的第32行,将ReadOption.Loose添加到CreateBinaryReader参数中_excelReader=ExcelReaderFactory.CreateBinaryReader(stream,ReadOption.Loose);现在它100%有效
if (e.EntryName == EntryName)
if (string.Equals(e.EntryName, EntryName, StringComparison.CurrentCultureIgnoreCase))