C#中将DataGridView中的数据导入到Csv文件及导出到Excel

介绍

DataGridView是C#中一个非常常用的控件,在Windows Forms应用程序中可以很好地展示数据。这篇文章将介绍如何将DataGridView中的数据导入到Csv文件中,以及如何将数据导出到Excel中。

将DataGridView中的数据导入到Csv文件

步骤一:创建一个窗体

首先我们需要在Visual Studio中创建一个Windows Forms应用程序,并在窗体中添加一个DataGridView控件和一个“导出”按钮。

//绑定数据

private void Form1_Load(object sender, EventArgs e)

{

DataTable dt = new DataTable();

dt.Columns.Add("编号", typeof(int));

dt.Columns.Add("姓名", typeof(string));

dt.Columns.Add("性别", typeof(string));

dt.Columns.Add("年龄", typeof(int));

dt.Rows.Add(1, "张三", "男", 18);

dt.Rows.Add(2, "李四", "女", 19);

dt.Rows.Add(3, "王五", "男", 20);

dt.Rows.Add(4, "赵六", "女", 21);

dataGridView1.DataSource = dt;

}

//导出Csv文件

private void button1_Click(object sender, EventArgs e)

{

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Filter = "Csv文件|*.csv";

saveFileDialog.Title = "导出Csv文件";

saveFileDialog.FileName = "数据.csv";

if (saveFileDialog.ShowDialog() == DialogResult.OK)

{

string fileName = saveFileDialog.FileName;

if (fileName.Trim() != "")

{

int columnCount = dataGridView1.ColumnCount;

int rowCount = dataGridView1.RowCount;

string strText = "";

for (int i = 0; i < columnCount; i++)

{

strText += dataGridView1.Columns[i].HeaderText;

if (i < columnCount - 1)

{

strText += ",";

}

}

strText += "\r\n";

for (int i = 0; i < rowCount; i++)

{

for (int j = 0; j < columnCount; j++)

{

strText += dataGridView1.Rows[i].Cells[j].Value.ToString();

if (j < columnCount - 1)

{

strText += ",";

}

}

strText += "\r\n";

}

File.WriteAllText(fileName, strText, Encoding.Default);

MessageBox.Show("导出成功!", "提示");

}

}

}

步骤二:绑定数据并设置导出

接下来我们需要在窗体的Load事件中绑定数据,并在导出按钮的Click事件中将数据导出到Csv文件。

首先在Load事件中创建一张DataTable表,并给表添加一些列和数据,并将该表绑定到DataGridView控件中。在导出按钮的Click事件中弹出一个SaveFileDialog对话框,让用户设置要导出的Csv文件的位置和名称。当用户点击“确定”按钮后,我们将通过遍历DataGridView控件中的所有行和列,并将数据保存到一个字符串变量中。然后将字符串变量保存到指定的Csv文件中。

在保存Csv文件的时候需要注意,我们使用的是File.WriteAllText方法,并指定了编码方式为“Encoding.Default”(ANSI编码)。如果您需要使用其他编码方式,可以进行相应的修改。

将DataGridView中的数据导出到Excel

步骤一:引用Excel相关类库

在将DataGridView中的数据导出到Excel中之前,我们需要先引用Excel相关的类库。进入Visual Studio的开发界面,右击项目名称,在弹出的选项中选择“管理NuGet程序包”,然后在搜索框中输入“Excel”,并进行安装。如果您已经安装了Office软件,可以直接使用COM组件方式进行引用,具体步骤可以参考相关的官方文档。

步骤二:创建Excel文件并写入数据

在我们成功引用了Excel相关的类库之后,我们可以开始创建并写入数据到Excel文件中。在实现过程中,我们首先需要添加如下两个命名空间。

using Microsoft.Office.Interop.Excel;

using Excel = Microsoft.Office.Interop.Excel;

接着我们需要在按钮的Click事件中创建一个Excel.Application类的实例,并设置一些属性值,如Visible和UserControl等属性。然后创建一个Excel.Workbooks集合对象,并利用其Add方法,创建一个新的Excel.Workbook对象。在创建完成之后,我们可以使用该对象的Worksheets属性,获取到一个Excel.Worksheets集合对象,并利用其Add方法,创建一个新的Excel.Worksheet对象。最后,我们利用两层循环的方式遍历控件中的所有行和列,并将行列索引值转换为Excel中的对应字符,然后将数据依次写入到Excel.Worksheet对象中即可。

private void button2_Click(object sender, EventArgs e)

{

Excel.Application excelApp = new Excel.Application();

excelApp.Visible = true;

excelApp.UserControl = true;

Excel.Workbooks wbs = excelApp.Workbooks;

Excel.Workbook wb = wbs.Add();

Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

int rowcount = dataGridView1.Rows.Count;

int colcount = dataGridView1.Columns.Count;

char[] rowIndex = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

for (int i = 0; i < colcount; i++)

{

ws.Cells[1, rowIndex[i]].Value2 = dataGridView1.Columns[i].HeaderText;

}

for (int i = 0; i < rowcount; i++)

{

for (int j = 0; j < colcount; j++)

{

ws.Cells[i + 2, rowIndex[j]].Value2 = dataGridView1.Rows[i].Cells[j].Value.ToString();

}

}

MessageBox.Show("导出成功!", "提示");

}

总结

本文介绍了如何将DataGridView中的数据导入到Csv文件中,以及如何将数据导出到Excel中。在导出Csv文件的时候,我们需要遍历DataGridView控件中的所有行和列,并将数据保存到一个字符串变量中。在保存Csv文件的时候需要注意,我们使用的是File.WriteAllText方法,并指定了编码方式为“Encoding.Default”(ANSI编码)。如果您需要使用其他编码方式,可以进行相应的修改。在导出Excel文件的时候,我们引用了Excel相关的类库,并利用Excel对象模型的相关方法和属性,将数据写入到Excel文件中。希望本文能够对您有所帮助。

后端开发标签