C# 读取未将内容保存到硬盘的流式Excel文件

C# 读取未将内容保存到硬盘的流式Excel文件,c#,wpf,excel,C#,Wpf,Excel,我可以通过ADO.net和ExcelReader轻松地读取excel文件,但我必须读取一个excel文件,其中的数据是流式传输的(由其他应用程序传输),并且数据不会保存在硬盘上 问题是filestream读取保存在硬盘上的文件内容:(但这里的数据并没有保存在硬盘上 任务一览表 1) 一些名为abc.exe的exe(第三方exe,我无法控制)每1秒将数据写入名为temp.xls的excel,并且此excel文件处于打开状态。我们可以在excel中看到这些数据,但这些数据没有保存在硬盘上。abc.e

我可以通过ADO.net和ExcelReader轻松地读取excel文件,但我必须读取一个excel文件,其中的数据是流式传输的(由其他应用程序传输),并且数据不会保存在硬盘上

问题是filestream读取保存在硬盘上的文件内容:(但这里的数据并没有保存在硬盘上

任务一览表

1) 一些名为abc.exe的exe(第三方exe,我无法控制)每1秒将数据写入名为temp.xls的excel,并且此excel文件处于打开状态。我们可以在excel中看到这些数据,但这些数据没有保存在硬盘上。abc.exe使用excel只是在我们只能看到数据的地方显示数据

2) 现在我正在尝试从excel中读取数据,因为这些数据没有保存在硬盘上,所以我们无法借助文件流类进行读取

3) 我正在寻找一种技术,通过这种技术,我们可以从打开的excel文件中直接从内存而不是硬盘中读取C#格式的数据

可以阅读吗


请帮帮我

有一种方法你可以遵循:

  • 打开temp.xls,带只读标志,带标准方式:
  • 对数据执行测试。将内容复制到另一个工作簿
  • 使用检测温度xls上的变化,并将其作为第一点重新打开
  • 另一件有用的事情是从abc.exe检测进程结束。可能只是通过检测进程表中不存在temp.xls或不存在abc.exe(通过)

    无论如何,此时您应该嗅探通过temp.xls的所有内容。

    如果您确实希望“实时访问”这些更改,您可以执行以下操作:

    • 编写Excel插件(基本上是Excel插件)
    • 它在Excel中运行,可以接收事件(如工作簿/单元格更改、文件打开/关闭等)
    • 然后,此加载项通过IPC(例如MMF)将所需的所有信息传递给您的EXE

    另一种选择可能是使用Interop直接与Excel通信-这是否有效取决于几个方面(另一个EXE如何与Excel通信等)。

    在此处查看类似帖子@sharmila,你提到的问题集中在如何在内存流中写入,而我的问题正好相反Guyz请帮我解决不,不是,你想在不将文件写入硬盘的情况下读取文件,这可以通过将文件写入内存流来完成。是的,abc.exe正在temp.xls中流式传输/显示数据,文件保存在硬盘上,但不是当前数据,当前数据仅显示在excel中。不,我在阅读方面没有取得任何成功,我请求帮助如何在C#应用程序中阅读这些数据