1

我目前正在尝试创建一个导出工具来将数据推送到 Excel 中。但是,在第一次推送之后,Excel 保持打开状态,有时用户可能希望在将更多数据推送到同一个 Excel 工作表中的另一个页面时让 Excel 保持打开状态。我通常会在导出完成后释放 COM 对象。我的方法现在的工作方式涉及每次导出时打开一个新的 excel 实例......

创建应用程序的全局实例以从我开始导出到 Excel 应用程序关闭时连续使用是否有益?

我是否应该使用事件处理程序来检测 Excel 何时关闭,以便我知道何时释放 COM 对象?

如果我确实尝试创建 Excel 应用程序的全局实例,我可以实例化它并等待释放它,这样我就不需要再次尝试查找打开的 excel 实例.. 但如果我需要查找,并且分配给一个变量,一个打开的 Excel 实例(以前存在于代码中,但释放了 COM 对象),我该怎么做?

4

2 回答 2

4

我过去用过这个。tPath 是应该打开/重用的我的 excel 文件的路径。

Dim exApp As New Excel.Application

'finds the workbook.  If it is already open, then it uses that.  Otherwise, it opens in new instance
Dim wb As Excel.Workbook
wb = System.Runtime.InteropServices.Marshal.BindToMoniker(tPath)
exApp = wb.Parent
于 2012-09-05T14:11:09.243 回答
4

您可以使用互操作库指向打开的 excel-app

(此代码是用 C# 编写的,因此 VB.Net 可能会有一些小的变化)

oExcel = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
于 2012-09-05T14:21:16.280 回答