You need to close and release the resources after modifying it.
you need to use try finally block and in finally block call app.Quit() method.
public void ExcelMethod()
{
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 worksheet1 = null;
try
{
app.Visible = true;
worksheet1 = workbook.Sheets["Sheet1"];
worksheet1 = workbook.ActiveSheet;
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(worksheet1);
worksheet1.Cells[1, 1] = "รางงานการจัดการโครงการโดยการใช้ Program evaluation and review technique";
worksheet1.Cells[3, 2] = "ตารางแสดงค่าต่างๆของกิจกรรมแต่ละตัวในโครงการนี้";
Microsoft.Office.Interop.Excel.Range Chartrange = Chartrange = worksheet1.get_Range("A1", "A1");
;
Chartrange.Font.Bold = true;
GC.Collect();
Marshal.ReleaseComObject(Chartrange);
for (int i = 1; i < 7 + 1; i++)
{
worksheet1.Cells[5, i] = dataGridView1.Columns[i - 1].HeaderText;
Microsoft.Office.Interop.Excel.Range kk = worksheet1.get_Range("A5", "G5");
Microsoft.Office.Interop.Excel.Borders borders = kk.Borders;
borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
borders.Weight = 3d;
GC.Collect();
Marshal.ReleaseComObject(borders);
Marshal.ReleaseComObject(kk);
}
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < 7; j++)
{
int excel_cell = dataGridView1.Rows.Count - 1 + 5;
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
int k = i + 6;
worksheet1.Cells[i + 6, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
Microsoft.Office.Interop.Excel.Range kk = worksheet1.get_Range("A" + k, "G" + k);
Microsoft.Office.Interop.Excel.Borders borders = kk.Borders;
borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
borders.Weight = 3d;
GC.Collect();
Marshal.ReleaseComObject(borders);
Marshal.ReleaseComObject(kk);
}
else
{
worksheet1.Cells[i + 2, j + 1] = "";
}
}
}
}
finally
{
releaseObject(workbook);
releaseObject(worksheet1);
if (app != null)
{
app.Quit();
}
releaseObject(app);
}
}
private void releaseObject(object obj)
{
if (obj != null && Marshal.IsComObject(obj))
{
Marshal.ReleaseComObject(obj);
}
obj = null;
}
[Agent_Spock]
- Added missing code brackets
[Jafarinejajadvazifehkhorani]
-I added one more solution to this question that I mustn't have done it, I should have updated the current answer.