使用C#打开Excel的实例
我正在使用Excel来填充一些数据,并使用下面的代码创build一个报告:
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();
这一切似乎工作正常,但是当我看任务pipe理器,我注意到在后台进程打开excel的几个实例。 每次我运行代码时,似乎都有一个excel实例,尽pipe每次都closuresexcel。
如果我手动打开Excel,甚至不会出现这些后台进程。
好的,所以我很快find了答案,我没有正确地释放互操作对象,这就是为什么即使在应用程序退出之后它们仍然存在。
我已经在下面包含了正确答案的链接,但是为了引用closures这些对象的代码是:
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互操作对象
所以我今天已经学习了一些关于垃圾收集的知识。