C#Winform中DataGridView导出为Excel的实现示例
1. 概述
在C# Winform开发中,经常会遇到需要导出DataGridView中的数据到Excel表格的需求。本文将带您逐步实现这一功能。
2. 准备工作
2.1 引入命名空间
首先,在代码前面添加以下引用:
using System;
using System.Windows.Forms;
using System.Data;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
我们需要使用到的关键命名空间有:System.Windows.Forms(Winform开发相关)、System.Data(数据处理相关)以及Microsoft.Office.Interop.Excel(Excel操作相关)。
2.2 创建DataGridView和按钮控件
在Form窗体中拖放一个DataGridView控件,用于展示数据。接着,再拖放一个Button控件,用于触发导出操作。
3. 数据绑定
在窗体的Load事件中,我们可以绑定数据到DataGridView中。假设有以下数据来源:
private DataTable GetSampleData()
{
// 模拟数据
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
dt.Columns.Add("性别");
dt.Rows.Add("张三", "25", "男");
dt.Rows.Add("李四", "30", "女");
dt.Rows.Add("王五", "28", "男");
return dt;
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = GetSampleData();
}
首先,我们需要在Form类中添加一个私有方法GetSampleData(),该方法返回一个DataTable作为示例数据源。然后,在Form的Load事件中将这个DataTable数据源赋值给DataGridView的DataSource属性即可。
4. 导出为Excel
4.1 安装并添加对Excel的引用
为了能够操作Excel文件,我们需要在项目中添加对Excel的引用。具体操作如下:
在“解决方案资源管理器”中,右键项目,选择“管理NuGet程序包”。
在搜索框中输入“Microsoft.Office.Interop.Excel”,然后点击“安装”按钮。
等待安装完成后,添加以下using语句到代码头部:
using Excel = Microsoft.Office.Interop.Excel;
4.2 编写导出方法
我们将导出的操作封装在一个方法中,以便在点击按钮时调用。具体的代码如下:
private void ExportToExcel(DataGridView dataGridView)
{
if (dataGridView.Rows.Count > 0)
{
// 创建Excel对象
Excel.Application excel = new Excel.Application();
excel.DisplayAlerts = false;
excel.Visible = false;
// 创建工作簿
Excel.Workbook workbook = excel.Workbooks.Add(Type.Missing);
Excel.Worksheet sheet = (Excel.Worksheet)workbook.ActiveSheet;
// 将数据从DataGridView导出到Excel
for (int i = 0; i < dataGridView.Rows.Count; i++)
{
for (int j = 0; j < dataGridView.Columns.Count; j++)
{
sheet.Cells[i + 1, j + 1] = dataGridView.Rows[i].Cells[j].Value.ToString();
}
}
// 保存Excel文件并关闭Excel
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExportedData.xlsx");
workbook.SaveAs(filePath);
workbook.Close();
// 释放Excel对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
sheet = null;
workbook = null;
excel = null;
MessageBox.Show("导出成功!");
}
else
{
MessageBox.Show("没有数据可供导出!");
}
}
导出方法接收一个DataGridView控件作为参数。在方法内部,我们先进行了数据的判断,如果DataGridView中无数据,则弹出提示框;否则,创建Excel对象,然后生成一个工作簿,将DataGridView中的数据逐行逐列导入到Excel文件中。最后,通过SaveAs()方法保存Excel文件,并关闭Excel对象。同时,我们进行对象的释放和置空操作,以释放资源。
4.3 触发导出操作
在点击按钮的Click事件中调用导出方法:
private void buttonExport_Click(object sender, EventArgs e)
{
ExportToExcel(dataGridView1);
}
在这个示例中,我们将导出的Excel文件保存在项目的根目录下,文件名为ExportedData.xlsx。您可以根据自己的需求修改保存路径和文件名。
5. 总结
通过上述步骤,我们成功实现了在C# Winform中将DataGridView中的数据导出为Excel文件的功能。首先,我们绑定了示例数据到DataGridView中;然后,通过安装和引用Excel相关库,编写导出方法;最后,在点击按钮事件中调用导出方法,触发导出操作。希望本文能帮助您在C# Winform开发中顺利完成DataGridView导出Excel的任务。