1 private void ExportExcels(string fileName, DataGridView myDGV)
2 {
3 string saveFileName = "";
4 SaveFileDialog saveDialog = new SaveFileDialog();
5 saveDialog.DefaultExt = "xls";
6 saveDialog.Filter = "Excel文件|*.xls";
7 saveDialog.FileName = fileName;
8 saveDialog.ShowDialog();
9 saveFileName = saveDialog.FileName;
10 if (saveFileName.IndexOf(":") < 0) return; //被点了取消
11 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
12 if (xlApp == null)
13 {
14 MessageBox.Show("无法创建Excel对象,可能您的设备未安装Excel");
15 return;
16 }
17 Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
18 Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
19 Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
20 //写入标题
21 for (int i = 1; i < myDGV.ColumnCount; i++)
22 {
23 worksheet.Cells[1, i] = myDGV.Columns[i].HeaderText;
24 }
25 //写入数值
26 for (int r = 0; r < myDGV.Rows.Count; r++)
27 {
28 for (int i = 1; i < myDGV.ColumnCount; i++)
29 {
30 worksheet.Cells[r + 2, i] = myDGV.Rows[r].Cells[i].Value;
31 }
32 System.Windows.Forms.Application.DoEvents();
33 }
34 worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
35 if (saveFileName != "")
36 {
37 try
38 {
39 workbook.Saved = true;
40 workbook.SaveCopyAs(saveFileName);
41 }
42 catch (Exception ex)
43 {
44 MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
45 }
46 }
47 xlApp.Quit();
48 GC.Collect();//强行销毁
49 }
DataGridView绑定时总是把主键作为隐藏字段放在第一列,此代码导出时已经过滤第一列隐藏列。