0

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

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

任务一览

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

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

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

是否可以阅读?

请帮帮我

4

2 回答 2

0

您可以遵循以下方法:

  1. 使用标准方式打开 带有只读标志的temp.xls : Workbooks.Open 方法
  2. 对数据执行你的特征。Peraphs 将内容复制到另一个工作簿。
  3. 使用FileSystemWatcher 类检测temp.xls上的更改并将其作为第一个点重新打开

另一件有用的事情是从 abc.exe 检测进程结束。也许它只是通过检测进程表中不存在temp.xls或不存在 abc.exe (通过ManagementEventWatcher 类)。

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

于 2013-08-20T21:24:41.867 回答
0

如果您真的想要“实时访问”这些更改,您可以这样做:

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

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

于 2013-08-20T21:29:07.463 回答