数据不多可以用下面的方式方法,如果数据较大,不建议这样使用,可能会比较卡
如果电脑上没有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. electron-vue 开发环境搭建(Windows环境)

    1.安装 Node.js,一切都基于这个.安装完成后,终端输入 node -v 验证. 2.建立自己的项目目录,然后进入目录. 安装 vue-cli ,终端输入 npm install -g vue- ...

  2. wpf使用DynamicDataDisplay插件,修改x轴的样式,改成透明的。

    时光偷走的,永远都是我们眼皮底下看不见的珍贵. 问题:X轴会显示灰色拖动条. 解决:将X轴颜色改为透明. DDD插件是开源的,但是网上的参考资料却很少,所以,很多问题在网上搜索不到,因为没有找到该插件 ...

  3. Lucene.net 全文检索文件

    using Lucene.Net.Analysis; using Lucene.Net.Analysis.Tokenattributes; using Lucene.Net.Documents; us ...

  4. JDK源码分析(10) CopyOnWriteArrayList

    概述 CopyOnWriteArrayList是一个线程安全集合,原理简单说就是:在保证线程安全的前提下,牺牲掉写操作的效率来保证读操作的高效.所谓CopyOnWrite就是通过复制的方式来完成对数据 ...

  5. Python 使用 lambda() 结合sort() 或 sorted() 对列表嵌套字典格式的数据进行排序

    1.使用sort()方法进行排序 my_list = [{"age":65, "money":5}, {"age":35, "mo ...

  6. Minimax-486. Predict the Winner

    Given an array of scores that are non-negative integers. Player 1 picks one of the numbers from eith ...

  7. Java并发工具类之线程间数据交换工具Exchanger

    Exchanger是一个用于线程间协做的工具类,主要用于线程间的数据交换.它提供了一个同步点,在这个同步点,两个线程可以彼此交换数据.两个线程通过exchange方法交换数据,如果一个线程执行exch ...

  8. sqlmap命令详解

    cookie注入:sqlmap.py -u 注入点 --cookie "参数" --tables --level 2 POST登录框注入:sqlmap.py -r 从文件读取数据 ...

  9. scroll事件实现监控滚动条改变标题栏背景透明度(zepto.js )

    今天做了一个类似于手机端京东首页的页面,效果图如下: 刷新页面的时候,标题栏(也就是搜索栏),背景是透明的,当我们往下滑的时候,可以改变标题栏的背景透明度(渐变效果): 当标题栏滑过轮播图后,透明度就 ...

  10. 题解 P3628 【[APIO2010]特别行动队 】

    题目大意 ​ 给你一个序列, 将这个序列分成若干段, 每一段的贡献为 \(ax ^ 2 + bx + c\)(x 为 这一段的权值之和) 具体思路 50pts ​ 考虑Dp, 设\(Dp_i\)为前i ...