Нелегко понять это правильно.Но я удивлен следующими компиляциями:
excelWorkbook.Cells[1, i] = dgv.Columns[i - 1].HeaderText;
var cell = excelWorkbook.Cells[1, i];
Возможно, вы имели в виду:
excelWorkbook.Cells[1, i].Value = dgv.Columns[i - 1].HeaderText;
var cell = excelWorkbook.Cells[1, i];
, который следует заменить на:
var cell = excelWorkbook.Cells[1, i];
cell.Value = dgv.Columns[i - 1].HeaderText;
Я нене вижу смысла в ваших вызовах GC.Collect
и GC.WaitForPendingFinalizers
, поскольку вы делаете их до того, как cell
и fontSetter
выйдут из области видимости.
Наконец, вызовы Marshal.FinalReleaseComObject
, вероятно, должны быть вБлок finally, так что они будут выполнены, даже если выброшено исключение.