数据不多可以用下面的方式方法,如果数据较大,不建议这样使用,可能会比较卡
如果电脑上没有Microsoft.Office.Interop.Excel.dll去找DLL下载站下载即可 
需要先导入这个dll的引用

呈上代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using  System.Data.SqlClient;
namespace 导出到execl
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        //绑定datagridview
        private void Bind()
        {
            string sql = string.Format("select id, no, name, age, gender, address from stuinfo");
            //getSet 方法返回的dataset所以要进行.Tables[0]
            this.dataGridView1.DataSource = SQLHelpercs.getSet(SQLHelpercs.ConString, sql).Tables[0]; ;
        }
 
        /// <summary>
        /// 导出excel 
        /// </summary>
        /// <param name="fileName">要保存excel的名称</param>
        /// <param name="dg">DataGridView 的 名称</param>
        public void OutExecl(string fileName, DataGridView dg)
        {
            if (dg.Rows.Count > 0)//判断datagridview是否有数据
            {
                string saveName = string.Empty;//声明一个保存名称
                SaveFileDialog sgfDialog=new SaveFileDialog();//创建一个保存对象
                sgfDialog.DefaultExt = "xls";//默认保存扩展名
                sgfDialog.Filter = "Excel文件|*.xls";//保存文件的类型
                sgfDialog.FileName = fileName;//保存的名称
                sgfDialog.ShowDialog();
                saveName = sgfDialog.FileName;
                if(saveName.IndexOf(":")<0)return;//点了取消
                Microsoft.Office.Interop.Excel.Application xlapp = new Microsoft.Office.Interop.Excel.Application();
                if (xlapp == null)
                {
                    MessageBox.Show("无法创建Execl!");
                    return;
                }
                Microsoft.Office.Interop.Excel.Workbooks wbs = xlapp.Workbooks;
 
              Microsoft.Office.Interop.Excel.Workbook workbook =
wbs.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 < dg.ColumnCount; i++)  
               {  
                   worksheet.Cells[1, i + 1] = dg.Columns[i].HeaderText;  
               }  
               //写入数值  
               for (int r = 0; r < dg.Rows.Count; r++)  
               {  
                   for (int i = 0; i < dg.ColumnCount; i++)  
                   {  
                       worksheet.Cells[r + 2, i + 1] = dg.Rows[r].Cells[i].Value;  
                   }  
                   System.Windows.Forms.Application.DoEvents();  
               }  
               worksheet.Columns.EntireColumn.AutoFit();//列宽自适应  
               
               if (saveName != "")  
               {  
                   try  
                   {  
                       workbook.Saved = true;  
                       workbook.SaveCopyAs(saveName);  
                       //fileSaved = true;  
                   }  
                   catch (Exception ex)  
                   {  
                       //fileSaved = false;  
                       MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);  
                   }  
               }  
               xlapp.Quit();  
               GC.Collect();//强行销毁   
               MessageBox.Show(fileName + "保存成功!", "提示", MessageBoxButtons.OK);  
           }  
           else  
           {  
               MessageBox.Show("报表为空,无表格需要导出","提示",MessageBoxButtons.OK);  
           } 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            Bind();
        }
 
        private void 导出到excelToolStripMenuItem_Click(object sender, EventArgs e)
        {
             OutExecl("cool.xls",this.dataGridView1);
        }
    }
}
 

winform 导出datagridview 到excel的更多相关文章

  1. C#winform导出数据到Excel的类

    /// <summary> /// 构造函数 /// </summary> public ExportData() { } /// <summary> /// 保存 ...

  2. C#导出DataGridView到Excel

    public class ExcelHelper { private static object missing = Type.Missing; #region ================导出= ...

  3. winfrom导出DataGridView为Excel方法

    声明:此方法需要电脑安装Excel软件 需要类库:Microsoft.Office.Interop.Excel.dll 可百度自行下载 方法代码: /// <summary> /// 导出 ...

  4. WinForm导出DataSet到Excel

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

    准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...

  6. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  7. 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  8. C# 导出dataGridView中的值到Excel

    C# 怎么导出dataGridView中的值到Excel 1 2 3 4 5 6 在系统应用过程中,数据是系统的核心.如果直接在应用软件中看数据,有时也有些不便,所以就会把系统数据转换成Excel格式 ...

  9. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

随机推荐

  1. win 10 mysql8.0安装

    1.解压缩安装包(记住自己的解压到那个目录,后面需要) 2.找到此电脑,然后找到属性(小编这里win10) 3.点击左侧高级系统设置 4.选择下面的环境变量 5.选择下面的新建,然后看图片,上面输入M ...

  2. f.lux在linux下的安装和使用

    安装还是蛮容易的~只是装完后在白天色温没什么变化就一直以为没有装成功 https://justgetflux.com/linux.html 这里下载,解压后 安装好以后xflux -l (经纬度) 就 ...

  3. CSS2.1SPEC:视觉格式化模型之width属性详解(下)

    本文承接CSS2.1SPEC:视觉格式化模型之width属性详解(上),继续分析CSS视觉格式化模型中width以及相关值的计算问题: 注:与上节不同,本节的demo中由于出现了float,absol ...

  4. DDoS防护之TCP防护

    本文由  网易云 发布. TCP协议,相信对于每一个开发工程师都不陌生.由于该协议是一个面向连接,可靠的特性,广泛应用于现在互联网的应用中.如常见的Web.SSH.FTP等都是基于TCP协议.目前TC ...

  5. python 带参与不带参装饰器的使用与流程分析/什么是装饰器/装饰器使用注意事项

    一.什么是装饰器 装饰器是用来给函数动态的添加功能的一种技术,属于一种语法糖.通俗一点讲就是:在不会影响原有函数的功能基础上,在原有函数的执行过程中额外的添加上另外一段处理逻辑 二.装饰器功能实现的技 ...

  6. jQuery基础笔记(2)

    day54 筛选器 参考:https://www.cnblogs.com/liwenzhou/p/8178806.html#autoid-1-7-5 筛选器方法 下一个元素: $("#id& ...

  7. java的几种定时任务

    本篇博文主要是讲述2.x 版本的quartz下的实现方案,1.x 版本的实现方式大致原理一致,但是具体的实现方式有些不一致,具体体现在获取  scheduler 这个类的方式上有些不同,这里不作过多的 ...

  8. 深度了解git工具

    今天给大家介绍一个深度了解git的学习视频,视频讲的挺好的,可以听听. 深度了解git学习视频

  9. Java之集合(二十五)ConcurrentHashMap

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7520808.html 1.前言 本章介绍使用的最频繁的并发集合类之一ConcurrentHashMap,之前介绍 ...

  10. 读取Java注解类型

    参考文章: (1)https://www.cnblogs.com/extjs4/p/6411507.html 关于注解第一篇 (2)https://www.cnblogs.com/extjs4/p/6 ...