在VB.NET中正确处理Interop.Excel的多个实例

在VB.NET中正确处理Interop.Excel的多个实例,excel,vb.net,visual-studio-2015,com-interop,excel-interop,Excel,Vb.net,Visual Studio 2015,Com Interop,Excel Interop,我的应用程序要求一个类中的两个不同函数读取一个Excel 我有一个用来读取标题并将其保存到.txt文件中,还有一个用来读取数据并将其放入我的DataGridView中 据我所知,Interop.Excel是处理我将在程序中打开的Excel文件的最佳方法,但不幸的是,我留下了一些相当长的重复代码 目前每个类都包含以下代码: Dim exApp = New Excel.Application Dim exWB = exApp.Workbooks.Open(myFilePath)

我的应用程序要求一个类中的两个不同函数读取一个Excel

我有一个用来读取标题并将其保存到.txt文件中,还有一个用来读取数据并将其放入我的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()函数,该函数通过ref传递给要关闭的excel对象,但我得到了相同的错误

如有任何想法或讨论,将不胜感激


非常感谢

你如何描述它要复杂得多。 我可以给您一些关于如何编写应用程序的一般要点:

创建一个包装类ExcelWrapper,例如,它将是唯一处理excel的类。其他类(例如,业务层中的类)将实例化ExcelWrapper(非Excel)类型的对象

本课程将:

  • 在构造函数中实例化excel.application对象
  • 有一个方法可以从excel中读取所有需要的数据,并将数据返回给调用它的人。例如,您可以返回一个DataTable来填充datagridview
  • 使用另一种方法读取标题并以字符串形式返回信息(取决于标题中写入的内容)
  • 用于关闭打开的文档和应用程序的close excel方法
  • 您需要实现IDisposable模式以正确清理互操作excel对象,但GC不能这样做,因为它是非托管代码
对于上面的每一项,您都可以在internet上找到许多示例。

“我遇到了一个错误”不是一个合适的问题描述。