سلام دوستان
با استفاده از کدهای زیر اطلاعات یک دیتا گرید رو توی یک فایل اکسل ذخیره می کنم مشکلی که وجود داره اینه که هربار برنامه اجرا میشه وفایل خروجی ساخته میشه
توی تسک منیجر ویندوز یک پروسس به نام EXCEL.EXE ایجاد میکنه و اگه تعداد دفعات اجرای برنامه بالا بره ویندوز هنگ میکنه متد dispose رو هرجای کدهام اجرا میکنم باز این مشکل حل نمیشه ممنون میشم دوستان راهنمائی بفرمایند که این متد رو کجا وبه چه صورت اجرا کنم که مشکل رفع بشه
 string code_meli, Personal_Number, Year, Month;    code_meli = txt_code_meli.Text;
Personal_Number = txt_Pnumber.Text;
Year = txt_Year.Text;
Month = txt_Month.Text;
//بایند کردن دیتا گرید ویو به جدول
string ShowAll = "select * from dbo.Personal where code_meli='" + code_meli + "'AND Year='" + Year + "'AND Month='" + Month + "'";
DataTable dt = new DataTable();
dt = Conction.DoQuery(ShowAll);
dgv1 .DataSource =dt ;

object miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
app.Visible = false;
worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
worksheet.Name = "مهرماه";
worksheet.Cells[1] = "ردیف";
worksheet.Cells[2] = "شماره پرسنلی";
worksheet.Cells[4] = "کدملی";
worksheet.Cells[3] = "نام ونام خانوادگی";
worksheet.Cells[5] = "کارکردماه";


for (int i = 0; i < dgv1.Rows.Count - 1; i++)
{

for (int j = 0; j < dgv1.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 2] = dgv1.Rows[i].Cells[j].Value;

}
}


//ایجاد فایل خروجی
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel Document(*.xlsx)|*.xlsx";
sfd.FileName = "Export";
if (sfd.ShowDialog() == DialogResult.OK)
{
workbook.SaveAs(sfd.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode. xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
app.Quit();

}