2013-08-19 97 views
0

我可以舒適地通過ADO.net和ExcelReader讀取excel文件,但我必須讀取數據流的Excel文件(通過其他應用程序),該數據是不是沒有得到保存硬盤上閱讀流Excel文件,這是不保存內容到硬盤

問題是FILESTREAM方式讀取保存在硬盤中的文件內容:(但在這裏一覽

1)一些exe文件數據不保存在硬盤上

任務命名爲abc.exe(第三方exe,我無法控制它)每隔1秒將數據寫入excel命名爲temp.xls,並且此excel文件已打開。我們可以在Excel中看到這些數據,但是數據沒有保存在硬盤上。 abc.exe正在使用excel來顯示數據,我們只能看到數據。

2)現在我試圖從Excel中讀取數據,因爲數據沒有保存在硬盤上,所以我們無法使用文件流類來讀取數據。

3)我正在尋找技術,我們可以從這個打開的excel文件直接從內存中讀取C#中的數據,而不是從硬盤讀取數據。

可以閱讀嗎?

請幫我

+0

在此處查看類似的帖子。 HTTP://計算器。com/questions/262341/get-data-from-an-uploaded-excel-file-without-saving-to-file-system – sharmila

+0

@sharmila,你提到的問題主要集中在如何在內存流中寫入,而我的問題正是相反 –

+0

Guyz請幫我出來 –

回答

0

有計算策略,你可以遵循:

  1. 開放temp.xls只讀標誌與標準方法:Workbooks.Open Method
  2. 上執行你的TRAITEMENT數據。 Peraphs將內容複製到另一個工作簿。
  3. 使用FileSystemWatcher Class檢測上temp.xls改變和重新打開它作爲第一點

另一件事可能是有用的是,檢測從abc.exe過程結束。也許這只是通過檢測不存在temp.xls或進程表中不存在abc.exe(通過ManagementEventWatcher Class)。

無論如何,在這一點上,你應該嗅探一切通過temp.xls

0

如果你真的想「活接」來,你可以做到這一點的變化:

  • 寫一個Excel的加載項(基本爲Excel插件)
  • 它運行Excel內部,可以接收事件(喜歡的工作簿/細胞改變,文件的打開/關閉等)...
  • 這個外接程序,然後通過通信IPC所需的所有信息(例如MMF)到您的EXE

另一個選擇可能是使用互操作直接與Excel溝通 - 這個工作是否足夠穩定取決於幾個方面(其他EXE如何與Excel等進行通信)。