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

时间:2013-08-19 11:27:05

标签: c# wpf excel

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

问题是文件流读取保存在硬盘中的文件内容:(但此处数据未保存在硬盘上

任务一览

1)有些exe命名为abc.exe(第三方exe,我无法控制),每隔1秒就将数据写入名为temp.xls的excel,这个excel文件是打开的。我们可以在excel中看到这些数据,但数据没有保存在硬盘上。 abc.exe正在使用excel来显示我们只能看到数据的数据。

2)现在我正在尝试从excel读取数据,因为该数据没有保存在硬盘上,所以我们无法在文件流类的帮助下阅读。

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

是否可以阅读?

请帮帮我

2 个答案:

答案 0 :(得分:0)

你可以遵循以下方法:

  1. 以标准方式使用 readonly 标记打开 temp.xls Workbooks.Open Method
  2. 对数据进行处理。 Peraphs将内容复制到另一个工作簿。
  3. 检测使用FileSystemWatcher Class temp.xls 的更改并将其重新打开为第1点
  4. 另一件事可能有用,就是从abc.exe中检测进程结束。也许只是通过检测 temp.xls 的不存在或者在进程表中不存在abc.exe(通过ManagementEventWatcher Class)。

    无论如何,你应该通过 temp.xls 嗅探所有通过的东西。

答案 1 :(得分:0)

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

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

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