【问题标题】:Read XLS document from System.IO.Stream从 System.IO.Stream 读取 XLS 文档
【发布时间】:2014-09-25 00:37:16
【问题描述】:

我正在实现一个具有 2 个参数的接口:(System.IO.Stream input, System.IO.Stream output)

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

如果是 CSV,那就更简单了:StreamReader.ReadLine()

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

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

有什么方法可以分析System.IO.Stream提供的XLS文件吗?

【问题讨论】:

  • 有人将流传递给您的应用程序吗?还是您在应用程序中创建流?
  • 有人在通过流,我无法控制它。
  • 所以,澄清一下,如果文件是 XLS,则有人将电子表格文档对象传递给您。对吗?
  • 它是一个二进制文件。读它和理解它是不一样的。将二进制文件写入光盘,然后用 Excel 打开它。我知道这看起来很浪费,但我认为 Interop.Excel 不会接受流。
  • 您可以使用 Excel ODBC 驱动程序打开流。在 MSDN 中搜索 Excel ODBC 驱动程序。

标签: c# .net excel office-interop excel-interop


【解决方案1】:

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

Read excel file from a stream

【讨论】:

  • 谢谢,查克,但正如问题中提到的,我熟悉SpreadsheetDocument 解决方案 - 如果 Excel 文件是 XML 格式(它们通常具有扩展名 XLSX),则可以使用它。我需要打开一个 XLS 文件(Excel 97-2003 工作簿)。
  • 谢谢你的澄清(我今天一定有阅读理解问题)。我为你更新了答案。
  • 我希望有一个标准的解决方案,但似乎没有标准的方法。我会检查建议的解决方案,谢谢。
  • 我将无法在项目中使用 Excel 数据阅读器库,因此我将投票但不接受答案。我只需要找到另一个不涉及第三方库的解决方案或解决方法。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 2014-07-09
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2011-03-17
  • 2018-08-28
  • 1970-01-01
相关资源
最近更新 更多