当前位置:首页 >> 信息与通信 >>

把WinForm的DataGridView的数据导出到Excel

把 WinForm 的 DataGridView 的数据导出到 Excel
1. 最近做一个项目,需要用到这个功能,在网上也找了很多资料,但是效果还是不好。我自己总结 了网上的代码和自己写了点。觉得用起来还是不错。写出来做个纪念。呵呵 ^_^ 2. 3. 4. private void button10_Click(object sender, EventArgs e) 5. 6. 7. 8. 9. try { Microsoft.Office.Interop.Excel.Application myExcel = n ew Microsoft.Office.Interop.Excel.Application();//创建 Excel 表 10. 11. myExcel.Visible = true; Microsoft.Office.Interop.Excel.Workbooks myWorkbooks = myExcel.Workbooks;//创建 Excel 工作表集合 12. Microsoft.Office.Interop.Excel.Workbook myWorkbook = m yWorkbooks.Add(System.Reflection.Missing.Value);//创建 Excel 工作表 13. Microsoft.Office.Interop.Excel.Worksheet myWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkbook.Worksheets[1];// 创建 Excel 工作表 Sheet1 页 14. Microsoft.Office.Interop.Excel.Range myRange = myExcel .get_Range(myExcel.Cells[1, 1], myExcel.Cells[1, 4]);//选择页的 范 myExcel.Cells[1, 4]表示下面 myhead 中存入的好多哥表头的个数 15. object[] myhead = {"编号","姓名","性别","名族" };//设置表 头,这种设置表头的方法是写死的,虽然有点笨,但是效果还是不错的 16. 17. 18. 19. 20. myRange.Value2 = myhead; if (this.dataGridView1.Rows.Count > 0) { myRange = myWorksheet.get_Range("A2", System.Refle ction.Missing.Value); 21. 22. 23. int row = 0; row = this.dataGridView1.Rows.Count;//设置表的行数 int col = 4;//设置表的列数,如果你表头是 4 个,这支需要列数 为 4 个就可以了,你可以根据你添加的表头来规定列数 24. 25. 26. 27. 28. 29. 30. object[,] mydata = new object[row, col]; try { for (int i = 0; i < row ; i++) { for (int j = 0; j < col; j++) { { 首先要求数据显示在 DataGridView 中,给个 button 事件如下:

31.

mydata[i, j] = this.dataGridView1[j, i ].Value.ToString();//读取 DataGridView 中的值,保存到 myData 数组中,这里要注意 哦,DataGridView 是列在前,而 Excel 刚好相反

32. 33. 34. 35. 36. 37. 38. } catch (Exception ex) { MessageBox.Show(ex.Message, "错误 ", MessageBoxButtons.OK, MessageBoxIcon.Error); 39. 40. 41. 表导出 42. 43. 44. 45. 46. 47. 48. 49. 50. } } } catch (Exception ex) { MessageBox.Show(ex.Message); } myExcel = null;//清空表单 myRange.EntireColumn.AutoFit(); } myRange = myRange.get_Resize(row, col); myRange.Value2 = mydata;//把 mydata 数组的值存到 Excel } }