用来记录一下。老是忘记,这个是比较稳定的方法:)
private void SaveExcel(DataGridView dataGridView1,string filename)
{
if (dataGridView1.Rows.Count == 0)
return;
Microsoft.Office.Interop.Excel.ApplicationClass _x =new Microsoft.Office.Interop.Excel.ApplicationClass();
_x.UserControl = false;
Microsoft.Office.Interop.Excel.WorkbookClass wb =(Microsoft.Office.Interop.Excel.WorkbookClass)this._x.Workbooks.Add(System.Reflection.Missing.Value);
//生成表头
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
_x.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
if (dataGridView1[j, i].ValueType == typeof(string))
{
_x.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString();
}
else
{
_x.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
}
}
}
wb.Saved = true;
this._x.ActiveWorkbook.SaveCopyAs(filename);
this._x.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject((object)_x);
System.GC.Collect();
}