C# 从System.IO.Stream读取XLS文档

C# 从System.IO.Stream读取XLS文档,c#,.net,excel,office-interop,excel-interop,C#,.net,Excel,Office Interop,Excel Interop,我正在实现一个有两个参数的接口:(System.IO.Stream输入,System.IO.Stream输出) 如果输入流源于XLSX文件,我将使用DocumentFormat.OpenXml.Packaging.SpreadsheetDocument读取该文档 如果它是CSV,那么就更容易了:StreamReader.ReadLine() 但是,流来自XLS文件,我不太确定如何正确读取它 我试图弄清楚Microsoft.Office.Interop.Excel是否可以读取流,但我不确定这是否可

我正在实现一个有两个参数的接口:
(System.IO.Stream输入,System.IO.Stream输出)

如果输入流源于XLSX文件,我将使用
DocumentFormat.OpenXml.Packaging.SpreadsheetDocument
读取该文档

如果它是CSV,那么就更容易了:
StreamReader.ReadLine()

但是,流来自XLS文件,我不太确定如何正确读取它

我试图弄清楚
Microsoft.Office.Interop.Excel
是否可以读取流,但我不确定这是否可行


是否有任何方法可以分析通过
System.IO.Stream
提供的XLS文件?

这里是另一个答案。它涉及一个新的库(exceldatareader)


是否有人向您的应用程序传递流?或者您正在应用程序中创建流?有人正在传递流,我无法控制它。因此,我要澄清的是,如果文件是XLS,则有人正在向您传递spreadsheetdocument对象。对吗?它是一个二进制文件。读它和理解它是不一样的。将二进制文件写入光盘,然后用Excel打开。我知道这看起来很浪费,但我不认为Interop.Excel会接受流。您可以使用Excel ODBC驱动程序打开流。搜索MSDN中的Excel ODBC驱动程序。谢谢,Chuck,但正如问题中提到的,我熟悉
电子表格文档
解决方案-如果Excel文件为XML格式(通常扩展名为XLSX),则可以使用该解决方案。我需要打开一个XLS文件(Excel 97-2003工作簿)。感谢您的澄清(我今天一定有阅读理解问题)。我为你更新了答案。我希望有一个标准的解决方案,但似乎没有标准的方法。我将检查建议的解决方案,谢谢。我将无法在项目中使用Excel Data Reader库,因此我将进行投票,但不接受答案。我只需要找到另一个不涉及第三方库的解决方案或解决方案。谢谢