在阅读了关于在引用excel com对象时不使用双点的许多线程之后,我决定实现它。终止excel过程
它一直工作,直到我来循环做。
这是我的循环。请注意,它的作品,如果我对此发表评论:
for (int i = 1; i < dgv.Columns.Count + 1; i++)
{
excelWorkbook.Cells[1, i] = dgv.Columns[i - 1].HeaderText;
var cell = excelWorkbook.Cells[1, i];
var fontSetter = cell.Font;
fontSetter.Bold = true; //Bolds the header row
// Garbage collecting
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(fontSetter);
Marshal.FinalReleaseComObject(cell);
}
不应该我的代码正确地处理它们的变量吗?
这里是我的全码:
[Code removed]
我试图按照步骤在上How do I properly clean up Excel interop objects?(第二个答案)
我试图通过puttng完整的循环尝试,然后使用finally,但它无法找到变量。也许是因为它们是在循环中声明的? – TheGateKeeper 2012-03-31 12:17:54
是的,try/finally将不得不在循环中。每次通过外观,你都会引用一个新的单元格和它的字体,并且你必须释放所有的单元格。 – Joe 2012-03-31 15:45:34
我做了一个更简单的方法,如下所示 – TheGateKeeper 2012-03-31 16:33:11