我正在创建一个可以从数据库数据生成 Excel 文件的 Windows 窗体应用程序。将数据库填充到文件中后,我打开它并执行一个宏,保存文件然后关闭它(或者我认为我正在关闭它)。这些文件保存在我的硬盘上,但是当所有文件生成时,我必须能够生成一组新文件,因此我必须在生成新文件之前从我的硬盘中删除所有旧文件。在运行应用程序一次并尝试生成新的文件集后,我收到一条错误消息,指出其中一个文件(第一批中生成的最后一个文件)被另一个进程使用。
这是我的代码:
public void RemoveRows_Macro(string fileName)
{
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
xlWorkBook = xlApp.Workbooks.Open(fileName);
//xlApp.Visible = true;
xlApp.DisplayAlerts = true;
//Run the macro
xlApp.Run("RemoveRows", 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, 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, Type.Missing);
xlWorkBook.Save();
xlWorkBook.Close(false);
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
Console.WriteLine("Error in releasing object :" + ex);
obj = null;
}
finally
{
GC.Collect();
}
}
由于应用程序没有释放文件,我做错了什么?