只需要传入datagridview的name即可。
1 //导出Excel()方法 2 public void ToExcel(DataGridView dataGridView) 3 { 4 //实例化一个Excel.Application对象 5 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 6 7 if (excel == null) 8 { 9 UMessageBoxWarning("无法创建Excel对象,可能您的计算机未安装Excel!"); 10 return; 11 } 12 try 13 { 14 //没有数据的话就不往下执行 15 if (dataGridView.Rows.Count == 0) 16 return; 17 18 //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写 19 excel.Visible = true; 20 21 //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错 22 excel.Application.Workbooks.Add(true); 23 //生成Excel中列头名称 24 for (int i = 0; i < dataGridView.Columns.Count; i++) 25 { 26 if (dataGridView.Columns[i].Visible == true) 27 { 28 excel.Cells[1, i + 1] = dataGridView.Columns[i].HeaderText; 29 } 30 31 } 32 //把DataGridView当前页的数据保存在Excel中 33 for (int i = 0; i < dataGridView.Rows.Count - 1; i++) 34 { 35 Application.DoEvents(); 36 for (int j = 0; j < dataGridView.Columns.Count; j++) 37 { 38 if (dataGridView.Columns[j].Visible == true) 39 { 40 if (dataGridView[j, i].ValueType == typeof(string)) 41 { 42 excel.Cells[i + 2, j + 1] = "‘" + dataGridView[j, i].Value.ToString(); 43 } 44 else 45 { 46 excel.Cells[i + 2, j + 1] = dataGridView[j, i].Value.ToString(); 47 } 48 } 49 50 } 51 } 52 //设置禁止弹出保存和覆盖的询问提示框 53 //... 54 //确保Excel进程关闭 55 excel.Quit(); 56 excel = null; 57 GC.Collect();//如果不使用这条语句会导致excel进程无法正常退出,使用后正常退出 58 UMessageBoxNone("文件已经成功导出!"); 59 } 60 catch (Exception ex) 61 { 62 MessageBox.Show(ex.Message); 63 } 64 65 }
时间: 2024-11-06 20:23:06