The Excel background process remains open after each opening and reading of a file using Iterop. After running the method below several times, I get a lot of Excel background processes. I understand that this was asked at different times, but I tried all the sentences (and implemented them in the code below), and nothing worked. Help someone help.
public List<double> ReadExcelFile()
{
Application excelApp = null;
Workbooks workbooks = null;
Workbook workBook = null;
Worksheet worksheet = null;
Range excelRange = null;
List<double> sheetValues = new List<double>();
try
{
excelApp = new Application();
workbooks = excelApp.Workbooks;
workBook = workbooks.Open(f_inputFilePath,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
worksheet = workBook.Sheets["Sheet1"];
excelRange = worksheet.UsedRange;
object[,] sheetValuesRaw = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
for (int i = f_firstNumericValueIndex; i <= sheetValuesRaw.GetLength(0); i++)
sheetValues.Add((double)sheetValuesRaw[i, 1]);
}
finally
{
workBook.Close(false, Type.Missing, Type.Missing);
workbooks.Close();
releaseObject(excelRange);
releaseObject(worksheet);
releaseObject(workbooks);
releaseObject(workBook);
excelApp.Quit();
releaseObject(excelApp);
}
return sheetValues;
}
private void releaseObject(object obj)
{
try
{
Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
source
share