ذخیره DataGrid در اکسل Excel

ابتدا در Add Reference و در تب Com گزینه های زیر را add کنید
1- Microsoft Excel 11 object Lib
Microsoft Office 11 object lib 2-

Excel.ApplicationClass excel = new ApplicationClass();
excel.Application.Workbooks.Add(true);
int ColumnIndex = 0;
foreach (DataGridViewColumn col in dgv.Columns)
{
ColumnIndex++;
excel.Cells[1, ColumnIndex] = col.HeaderText;

}
int rowIndex = 0;
string val;

pb.Maximum = dgv.Rows.Count;
foreach (DataGridViewRow row in dgv.Rows)
{
rowIndex++;
ColumnIndex = 0;
foreach (DataGridViewColumn col in dgv.Columns)
{
ColumnIndex++;
if (row.Cells[ColumnIndex - 1].Value == null)
val = "";
else
val = row.Cells[ColumnIndex - 1].Value.ToString();
excel.Cells[rowIndex + 1, ColumnIndex] = val;

}
}
excel.Visible = true;