you havent released the com reference used by the Excel. The following link explains it well how to release the com objects.
how-to-properly-clean-up-excel-interop-objects[
^]
From the above reference replace this line
workbook = excelApp.Workbooks.Add(1);
to
Excel.Workbooks workbooks = excelApp.Workbooks;
workbook = workbooks.Add(1);
and add the following code for releasing your com references.
workbook.Close(false, Type.Missing, Type.Missing);
excelApp.Quit();
GC.Collect();
Marshal.FinalReleaseComObject(sheets);
Marshal.FinalReleaseComObject(newSheet);
Marshal.FinalReleaseComObject(workbook);
Marshal.FinalReleaseComObject(workbooks);
Marshal.FinalReleaseComObject(excelApp);
I dont understand why you call the Open statement just after the SaveAs, why dont you use the same workbook just saved before? you can remove that line.