写点什么

C# DataGridView 数据导出 Excel 文件

作者:IC00
  • 2022 年 7 月 20 日
  • 本文字数:3141 字

    阅读完需:约 10 分钟

C# DataGridView数据导出Excel文件

前言:

博主在做项目的时候需要把数据库的数据用 DataGridView 展示,然后把展示的数据导出为 Excel 文件,很多时候我们做项目都会有一个下载文件的按钮,我们需要用微软的的接口,Microsoft.Office.Interop.Excel,我们需要导入这个引用对 DataGridView 数据进行处理,利用 Microsoft.Office.Interop.Excel 提供的类对数据进行导出。博主把具体的操作步骤写下来教大家使用!!!!

每日一遍,快乐就完事了

1.创建窗体文件并设计好界面

博主直接用的之前的项目,大家需要可以看博主之前的文章


2.导入 Microsoft.Office.Interop.Excel 引用

在窗体项目里面我们找到引用,右击添加引用在 COM 类型库里面搜索 Excel 找到 Microsoft Excel 14.0 这个引用


3.双击生成函数对代码处理

双击按钮自动生成触发函数,在函数里面写入代码


3.1 对命名空间的引用

在命名空间添加 using Excel = Microsoft.Office.Interop.Excel;这条命名空间。


3.2 代码分析

博主对每一条代码都写了注解方便大家理解,这里使用了文件的操作。



3.3 注:博主这里的代码可以直接复制使用

博主这个导出文件的操作的代码,可以直接复制到你需要导出的按钮进行粘贴就可以使用,前提是你把前面的步骤做完了。


3.3.1 代码展示

博主对每条导出文件的操作都基本上做出了注解方便大家阅读


using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;using MySql.Data.MySqlClient;using Excel = Microsoft.Office.Interop.Excel;namespace student{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }
private void Form1_Load(object sender, EventArgs e) {
} //博主这里使用的是MySQL,需要SQLsever看博主之前的文章 private void button1_Click(object sender, EventArgs e) { string connString = "server=localhost; database=student; uid=root; pwd=88888888;Character Set=utf8;"; MySqlConnection conn = new MySqlConnection(connString); MySqlCommand comm = new MySqlCommand(); comm.Connection = conn; try { conn.Open(); string sql = "select course_id ,course_name,teacher_naem from T_course"; MySqlDataAdapter da = new MySqlDataAdapter(sql, connString); DataSet ds = new DataSet(); da.Fill(ds,"studens"); dataGridView1.DataSource = ds; dataGridView1.DataMember ="studens"; conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作数据库出错!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} } private void button2_Click(object sender, EventArgs e) //点击导出到Excel表按钮 { string fileName = "IC00";//可以在这里设置默认文件名 string saveFileName = "";//文件保存名 SaveFileDialog saveDialog = new SaveFileDialog();//实例化文件对象 saveDialog.DefaultExt = "xlsx";//文件默认扩展名 saveDialog.Filter = "Excel文件|*.xlsx";//获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。 saveDialog.FileName = fileName; saveDialog.ShowDialog();//打开保存窗口给你选择路径和设置文件名 saveFileName = saveDialog.FileName; if (saveFileName.IndexOf(":") < 0) return; //被点了取消 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { MessageBox.Show("无法创建Excel对象,您的电脑可能未安装Excel"); return; } Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;//Workbooks代表一个 Microsoft Excel 工作簿 Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);//新建一个工作表。 新工作表将成为活动工作表。 Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 //写入标题 for (int i = 0; i < dataGridView1.ColumnCount; i++)//遍历循环获取DataGridView标题 { worksheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText; }// worksheet.Cells[1, i + 1]表示工作簿第一行第i+1列,Columns[i].HeaderText表示第i列的表头 //写入数值 for (int r = 0; r < dataGridView1.Rows.Count; r++)//这里表示数据的行标,dataGridView1.Rows.Count表示行数 { for (int i = 0; i < dataGridView1.ColumnCount; i++)//遍历r行的列数 { worksheet.Cells[r + 2, i + 1] = dataGridView1.Rows[r].Cells[i].Value;//Cells[r + 2, i + 1]表示工作簿从第二行开始第一行保存为表头了,dataGridView1.Rows[r].Cells[i].Value获取列的r行i值 } System.Windows.Forms.Application.DoEvents();//实时更新表格 } worksheet.Columns.EntireColumn.AutoFit();//列宽自适应 MessageBox.Show(fileName + "资料保存成功", "提示", MessageBoxButtons.OK);//提示保存成功 if (saveFileName != "")//saveFileName保存文件名不为空 { try { workbook.Saved = true;//获取或设置一个值,该值指示工作簿自上次保存以来是否进行了更改 workbook.SaveCopyAs(saveFileName); //fileSaved = true;将工作簿副本保存到文件中,但不修改内存中打开的工作簿 } catch (Exception ex) {//fileSaved = false; MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message); } } xlApp.Quit(); GC.Collect();//强行销毁 } }}
复制代码

4. 效果展示

会在你选择的路径导出 Excel 文件,我们可以对文件进行处理。


总结:

这个操作虽然简单,但是多多少少还是会有一些难度的,我们需要注意要添加引用不然代码可能不起作用,另外对 Workbooks 有了解的童鞋,上手肯定快,如果你对这个不了解也没关系可以去微软官网了解,学习 C#可以多看看官方文档,对你帮助会很大的,好了,传作不易,点赞关注评论收藏哦哈哈哈!!!



用户头像

IC00

关注

还未添加个人签名 2022.07.14 加入

还未添加个人简介

评论

发布
暂无评论
C# DataGridView数据导出Excel文件_C#_IC00_InfoQ写作社区