public void SaveAsExcel(string path, DataGridView gridView)
{
saveAsExcel(path, gridView);
System.GC.Collect();
}
private void saveAsExcel(string path,DataGridView gridView)
{
object objMissing = System.Reflection.Missing.Value;
Excel.Application app = new Excel.Application();
app.Visible = false;
Excel.Workbook workBook = app.Workbooks.Add(objMissing);
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Worksheets[1];
for (int i = 0; i < gridView.Columns.Count; i++)
{
Excel.Range head = (Excel.Range)workSheet.Cells[3, i + 1];
head.Value = gridView.Columns[i].HeaderText;
head = null;
}
Excel.Range range = workSheet.get_Range("A4", objMissing);
int rows = gridView.Rows.Count, cols = gridView.Columns.Count;
Excel.Range ranges = range.get_Resize(rows, cols);
object[,] datas = new object[rows, cols];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
DataGridViewCell cell = gridView[j, i];
if (typeof(string) == cell.ValueType)
{
datas[i, j] = string.Format("'{0}", cell.FormattedValue);
}
else
{
datas[i, j] = cell.FormattedValue.ToString();
}
}
}
ranges.Value = datas;
workBook.SaveAs(path, objMissing, objMissing, objMissing, objMissing, objMissing, Excel.XlSaveAsAccessMode.xlNoChange, objMissing,
objMissing, objMissing, objMissing);
workBook.Close(false, objMissing, objMissing);
app.Quit();
range = null;
ranges = null;
workBook = null;
workSheet = null;
app = null;
}