前言:

博主在做项目的时候需要把数据库的数据用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#可以多看看官方文档,对你帮助会很大的,好了,传作不易,点赞关注评论收藏哦哈哈哈!!!

C# DataGridView数据导出Excel文件相关推荐

  1. 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)

    导出数据到Excel文件中二种方法四种形式:其一是创建新的Excel文件实例写入数据:其二是打开已有Excel文档对其执行更新或插入数据:保存文档方法有:直接保存(2种).另存.间接保存.接下来分别介 ...

  2. DataTable中的数据导出Excel文件

    DataTable中的数据导出Excel文件 View Code ///<summary> /// 将DataTable中的数据导出到指定的Excel文件中 ///</summary ...

  3. 在vue中把数据导出Excel文件

    在vue中把数据导出Excel文件 第一次尝试写文章 在vue中把数据导出成Excel格式的文件,话不多,上代码: 第一步我们要先安装几个集成的插件 npm install -S file-saver ...

  4. 转载:Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)

    作者: Maco   发布日期: 2006-8-28 11:09:28 (一) . 运行示例图 1. 待导出数据的GridView图: 2. 生成的Excel文件 (二). 代码 1. 前台页面 Gr ...

  5. java struts2 excel上传_Java Struts2 实现数据库数据导出Excel文件

    HTML: 导出 Struts.xml true application/vnd.ms-excel;charset=GBK excelStream attachment;filename=${file ...

  6. vue导出excel加一个进度条_使用vue导出excel文件

    今天再开发中遇到一件事情,就是怎样用已有数据导出excel文件,网上有许多方法,有说用数据流的方式,https://www.cnblogs.com/yeqrblog/p/9758981.html,但是 ...

  7. Springboot 自定义模板导出Excel文件

    指定模板(自定义)导出数据,就像: 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 注意: 模板这里有个小坑,就是当传入的值为数组时,需要 ...

  8. Springboot 指定自定义模板导出Excel文件

    前言 之前写过一篇极其简单的excel导入导出,是单个文件的: Springboot 最简单的结合MYSQL数据实现EXCEL表格导出及数据导入_小目标青年的博客-CSDN博客 还写过一篇单个,多个 ...

  9. 导出excel文件数字会自动变科学计数法的解决方式

    将数据导出excel文件变成科学计数法问题:分析:用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式.其实这个问题跟用什么语言导出 ...

最新文章

  1. Redis系列五:redis键管理和redis数据库管理
  2. mvp架构 java_GitHub - AnthonyCoder/MvpForJava: 一个可直接快速引入的 Java 版本的模块化 MVP 框架...
  3. 程序员修炼之道:从小工到专家读后感02
  4. 用盛金公式求解一元三次方程
  5. leetcode347. 前 K 个高频元素
  6. 一个C++程序执行main函数前和执行完main函数后会发生什么。
  7. 用jar 命令打包war包
  8. checkbox:全选与反全选
  9. 谈谈平安京资源的npk解包思路
  10. 复制错误:安装程序无法复制文件 Atapi.sys
  11. 32位微型计算机原理接口,32位微机原理及接口技术
  12. 2022年南京医院三基考试耳鼻咽喉科学精选题及答案
  13. c语言中islower是什么函数,c语言中的isalpha,isdigit,islower,isupper等一系列函数.pdf
  14. Heka GeoIpDecoder 配置
  15. 圆通快递拒收后,如何快速查询退回件单号的物流情况
  16. 微信公众号数据2019_数据丨2019年微信公众号文章数据报告!
  17. PHP字符串函数strtoupper( 将字符串转化为大写)
  18. 关于示波器是否必须要接地线的疑问
  19. web前端入门到实战:CSS颜色、背景和剪切
  20. 浮点类型的比较,精度控制(float.h的利用 ,DBL_EPSILON)

热门文章

  1. 蓝桥杯练习题 Fibonacci数列
  2. PHP 实现PDF转图片
  3. 计算机要学什么知识,学电脑要先学什么 学电脑要学习什么知识
  4. 解决git报错[remote rejected] HEAD -> master (pre-receive hook declined) error: failed to push some...
  5. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
  6. 用心行走——《做最好的新教师》读后感3200字
  7. Java杂项基础知识点总结
  8. 人生算法之「延迟满足感」
  9. fxmarket:9月25日黄金、沪深300、恒指策略分析
  10. Sprite Kit教程