public void DataGridViewExportData(DataGridView dgv, string fileName)
{
string saveFileName = "";
//bool fileSaved = false;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel檔案|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0)
return; //被點了取消
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("無法建立Excel對象,可能您的機子未安裝Excel", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
string[] array = new string[dgv.Columns.Count];
//擷取Visble =true 的列
foreach (DataGridViewColumn column in dgv.Columns)
{
if (column.Visible == true)
{
array[column.DisplayIndex] = column.HeaderText + '|' + column.Name; ;
}
}
int RowsCount = dgv.Rows.Count;
int ColumnsCount = array.Length;
int mm = 1;
for (int i = 0; i < ColumnsCount; i++)
{
string[] str = new string[2];
string ColumnName;
try
{
str = array.GetValue(i).ToString().Split('|');
ColumnName = str[0];
}
catch
{
continue;
}
//導出列名
worksheet.Cells[1, mm] = ColumnName;
//導出列内容
for (int m = 0; m < RowsCount; m++)
{
try
{
worksheet.Cells[m + 2, mm] = dgv.Rows[m].Cells[str[1]].FormattedValue.ToString();
}
catch
{ }
}
//執行完一列 mm++
mm++;
}
worksheet.Columns.EntireColumn.AutoFit();
if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
}
catch (Exception ex)
{
MessageBox.Show("導出檔案時出錯,檔案可能正被打開!\n" + ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
xlApp.Quit();
GC.Collect();//行銷毀
//saveFileName +
MessageBox.Show("儲存完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}