C#Winform中DataGridView导出为Excel的实现示例

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的任务。

后端开发标签