使用c#打开excel实例

本文关键字:实例 excel 打开 使用 | 更新日期: 2023-09-27 18:07:28

我正在使用excel填充一些数据,并使用以下代码创建一个报告:

Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Open(templatePath);
Excel.Worksheet worksheet = workbook.Worksheets[1];
worksheet.Cells[1, 2] = myInbox.FolderPath;
worksheet.Cells[2, 2] = DateTime.Today.ToShortDateString();
worksheet.Cells[2, 4] = DateTime.Now.ToShortTimeString();
app.Visible = true;
workbook.RefreshAll();

这一切似乎工作得很好,但是当我看任务管理器时,我注意到几个excel实例在"后台进程"中打开。每次我运行代码时,尽管每次关闭excel,但似乎都有一个excel实例。

如果我手动打开Excel,这些后台进程甚至不会出现

使用c#打开excel实例

好的,所以我很快就找到了答案,我没有正确地释放互操作对象,这就是为什么即使在应用程序退出后它们仍然存在的原因。

我在下面包含了正确答案的链接,但作为参考,关闭这些对象的代码是:

Excel.Application app = new Excel.Application();
Excel.Workbooks workbooks = app.Workbooks;
Excel.Workbook workbook = workbooks.Open(templatePath);
Excel.Worksheet worksheet = workbook.Worksheets[1];
//do stuff to worksheet here
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

清理excel互操作对象

今天我学了一点关于垃圾收集的知识