Знаю, что тема уже много кратно обсуждалась, перечитала кучу топиков, но тем не менее проблема остается. Все ссылки обнуляю.
См. код, все работает корректно, но если раскомментировать создание еще одного Range x3, то процесс не убивается, хоть и ссылку на него обнуляю. Что не так то?? Аналогичная история с попыткой открытия еще одного листа
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
private void ExportToExcel()
{
try
{
excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
}
catch
{
excelApp = new Excel.Application(); // Если нет открытого, то создаём новое приложение
}
String TemplatePath = System.Windows.Forms.Application.StartupPath + String.Format(@"\{0}.xltx", fileName);
//Книга.
try
{
excelAppWorkbooks = excelApp.Workbooks; // Получаем список открытых книг
excelAppWorkbook = excelAppWorkbooks.Add(TemplatePath);
}
catch (System.Exception ex)
{
throw new Exception("Не удалось загрузить шаблон для экспорта " + TemplatePath + "\n" + ex.Message);
}
excelSheets = excelAppWorkbook.Worksheets; // Получаем список листов в нашей книге
excelWorkSheet = (Excel.Worksheet)excelSheets.get_Item(1); // Берем первый лист
CreateTable(dt); // формируем таблицу с данными для выгрузки
Excel.Range x1 = excelWorkSheet.Cells[head + 1, 1];
Excel.Range x2 = excelWorkSheet.Cells[head + 1, dt.Columns.Count];
// Excel.Range x3 = excelWorkSheet.Cells[head, dt.Columns.Count];
excelCells = excelWorkSheet.get_Range(x1, x2);
excelCells.Value2 = datatuple.Item2;
//==============Внешний вид
//настройки для всей таблицы
excelCells.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
Excel.Borders xlb = excelCells.Borders;
// внутренние вертикальные границы
xlb[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
xlb = null;
x1 = null;
x2 = null;
// x3 = null;
excelCells = null;
excelWorkSheet = null;
excelSheets = null;
SaveToFile(fileName);//Сохраняем в файл
ClearExcel();
}
private void ClearExcel()
{
excelAppWorkbook.Close(false, false, false);
excelAppWorkbooks = excelApp.Workbooks;
if (excelAppWorkbooks.Count == 0)
excelApp.Quit();
excelAppWorkbook = null;
excelAppWorkbooks = null;
excelApp = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}