データベース データから Excel ファイルを生成できる Windows フォーム アプリケーションを作成しています。データベースをファイルに入力した後、それを開いてマクロを実行し、ファイルを保存してから閉じています(または閉じていると思います)。これらのファイルは HDD に保存されますが、すべてのファイルが生成されたら、新しいファイル セットを生成できる必要があるため、新しいセットを生成する前に、古いファイルをすべて HDD から削除する必要があります。アプリケーションを一度実行した後、新しいファイル セットを生成しようとすると、ファイルの 1 つ (最初のバッチで生成された最後のファイル) が別のプロセスによって使用されているというエラーが表示されます。
ここに私のコードがあります:
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();
}
}
アプリケーションがファイルを解放していないため、何が間違っていますか?