C#程序将DataGridView数据导出到Excel

需积分: 9 3 下载量 17 浏览量 更新于2024-09-24 收藏 18KB TXT 举报
"将C#中的DataGridView控件的数据导出到Excel文件的操作方法" 在C#编程中,经常需要将应用程序界面中的数据展示组件,如DataGridView,中的数据导出到Excel文件,以便用户可以进行进一步的数据处理或保存。在本示例中,我们将探讨如何实现这个功能,特别是在Windows Forms应用程序中。 首先,为了与Excel交互,我们需要引用`Microsoft.Office.Interop.Excel`命名空间,这是.NET Framework提供的一个允许与Office应用程序进行互操作的库。确保在项目中添加对`Microsoft.Office.Interop.Excel`的引用。 ```csharp using Microsoft.Office.Interop.Excel; ``` 接下来,创建一个窗体(Form)并添加一个DataGridView控件以及一个触发导出操作的按钮。在按钮的点击事件处理程序中,我们将实现数据导出的功能。 ```csharp public partial class Form1 : Form { private DataGridView _DataGridView; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { _DataGridView = this.dataGridView1; ExportToExcel("www"); } } ``` 在这里,`_DataGridView`变量用于存储 DataGridView 控件的引用,以便在`ExportToExcel`方法中使用。`button1_Click`事件处理程序调用了`ExportToExcel`方法,传递了一个默认的文件名前缀"www"。 为了导出数据,我们需要创建一个方法,该方法接收一个文件名前缀,并创建一个新的Excel应用程序实例,然后创建一个新的工作簿: ```csharp private void ExportToExcel(string pfileName) { _FileName = pfileName == null ? "未定义" : pfileName.Trim(); string fileName = ShowSaveFileDialog("Microsoft Excel Document", "Microsoft Excel|*.xls"); if (fileName != "") { // ... } } ``` `_FileName`变量用于存储最终的文件名。`ShowSaveFileDialog`函数用于弹出一个保存文件对话框,让用户选择保存的位置和文件名。如果用户确认了文件名,我们继续导出操作。 在`if (fileName != "")`语句块中,我们需要创建Excel应用程序对象,创建新的工作表,并将DataGridView的数据写入工作表: ```csharp Application excelApp = new Application(); Workbook workbook = excelApp.Workbooks.Add(); Worksheet worksheet = workbook.ActiveSheet; // 将数据从DataGridView复制到Excel for (int i = 0; i < _DataGridView.Columns.Count; i++) { worksheet.Cells[1, i + 1] = _DataGridView.Columns[i].HeaderText; } for (int row = 0; row < _DataGridView.Rows.Count; row++) { for (int col = 0; col < _DataGridView.Columns.Count; col++) { worksheet.Cells[row + 2, col + 1] = _DataGridView.Rows[row].Cells[col].Value.ToString(); } } ``` 这里,我们首先设置第一行作为表头,将DataGridView的列头复制到Excel的第一行。然后,遍历每一行和每一列,将数据填入对应的单元格。 最后,保存工作簿并关闭Excel应用程序: ```csharp workbook.SaveAs(fileName); workbook.Close(); excelApp.Quit(); ``` 别忘了释放对象,防止内存泄漏: ```csharp System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); ``` 通过以上步骤,我们就成功地实现了将DataGridView中的数据导出到Excel文件的功能。用户可以根据自己的需求对代码进行适当的修改和扩展,例如添加错误处理、格式化单元格样式等。