0

我的應用程序需要通過一個Excel讀取一個單獨的Excel,比如說,一個類中有兩個不同的函數。在VB .NET中正確處理Interop.Excel的多個實例

我有一個閱讀的標題,並將它們保存到一個文本文件,一個讀取數據,並把它變成我的DataGridView

據我所知Interop.Excel是最好的方式處理我將在我的程序中打開的excel文件,但不幸的是我留下了一些相當長的重複代碼。

此刻每個類包含以下代碼:

Dim exApp = New Excel.Application 
     Dim exWB = exApp.Workbooks.Open(myFilePath) 
     Dim exWS = exWB.Sheets(1) 
     ** Some statements run here ** 
     exApp.Quit() 
     exApp = Nothing 
     exWB = Nothing 

沒有太大的問題,如果我只有兩個功能,但如果我有像5,這似乎是一個漫長的方式保持開啓和關閉Excel對象。

什麼是最好或更有效的方式來處理使用的Excel對象,而不是關閉和重新打開?

我嘗試初始化我正在使用的類中的Excel對象,但是當我試圖從一個函數中聲明它不被允許時會出現錯誤。 我也試着創建一個CloseExcel()函數,它傳遞了ByRef的excel對象來關閉,但是我得到了同樣的錯誤。

任何想法或討論,將不勝感激。

非常感謝!

+0

「我得到一個錯誤」不是一個合適的問題描述。 –

回答

0

它是如何描述它更復雜。 我可以給你一些一般的觀點,如何編寫你的應用程序:

創建一個包裝類ExcelWrapper例如,將是唯一的類將處理Excel的類。其他類(例如業務層中的類)將實例化ExcelWrapper(不是Excel)類型的對象。

這個類:

  • 實例Excel.Application對象在構造
  • 具有從讀取Excel你需要的所有東西和數據返回給誰調用它的方法。您可以返回一個DataTable來填充datagridview。
  • 有另一種方法來讀取頭,並返回信息爲字符串(取決於什麼是在標題中寫的)
  • 一個關閉Excel方法關閉打開的文檔和應用程序
  • 您需要實現IDisposable模式爲了正確清理interop excel對象,GC不能這樣做,因爲它是非託管代碼。

對於上述每個項目,您可以在互聯網上找到很多示例。

相關問題