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

准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel

没有使用SaveFileDialog,但却可以弹出保存对话框来

先做导出当前页数据到Excel的

DataGridView命名为dataGridView1

 1 //按下导出按钮
 2 private void button7_Click(object sender, EventArgs e)
 3 {
 4     print(dataGridView1);
 5 }
 6 public void print(DataGridView dataGridView1)
 7 {
 8     //导出到execl
 9     try
10     {
11         //没有数据的话就不往下执行
12         if (dataGridView1.Rows.Count == 0)
13             return;
14         //实例化一个Excel.Application对象
15         Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
16
17         //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
18         excel.Visible = false;
19
20         //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
21     excel.Application.Workbooks.Add(true);
22         //生成Excel中列头名称
23         for (int i = 0; i < dataGridView1.Columns.Count; i++)
24         {
25             excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
26         }
27         //把DataGridView当前页的数据保存在Excel中
28         for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
29         {
30             for (int j = 0; j < dataGridView1.Columns.Count; j++)
31             {
32                 if (dataGridView1[j, i].ValueType == typeof(string))
33                 {
34                     excel.Cells[i + 2, j + 1] = "‘" + dataGridView1[j, i].Value.ToString();
35                 }
36                 else
37                 {
38                     excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
39                 }
40             }
41         }
42
43         //设置禁止弹出保存和覆盖的询问提示框
44         excel.DisplayAlerts = false;
45         excel.AlertBeforeOverwriting = false;
46
47         //保存工作簿
48         excel.Application.Workbooks.Add(true).Save();
49         //保存excel文件
50         excel.Save("D:" + "\\KKHMD.xls");
51
52         //确保Excel进程关闭
53         excel.Quit();
54         excel = null;
55
56     }
57     catch (Exception ex)
58     {
59         MessageBox.Show(ex.Message, "错误提示");
60     }
61 }  

导出从数据库中查询到的所有的数据到Excel中

 1 #region 导出全部数据到Excel中,可弹出保存对话框,但没用SaveFileDialog
 2
 3 public void printAll(System.Data.DataTable dt)
 4 {
 5     //导出到execl
 6     try
 7     {
 8         //没有数据的话就不往下执行
 9         if (dt.Rows.Count == 0)
10             return;
11         //实例化一个Excel.Application对象
12         Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
13
14         //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
15         excel.Application.Workbooks.Add(true);
16
17         //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
18         excel.Visible = false;
19         //生成Excel中列头名称
20         for (int i = 0; i < dt.Columns.Count; i++)
21         {
22             excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;//输出DataGridView列头名
23         }
24
25         //把DataGridView当前页的数据保存在Excel中
26         if (dt.Rows.Count > 0)
27         {
28             for (int i = 0; i < dt.Rows.Count; i++)//控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完
29             {
30                 for (int j = 0; j < dt.Columns.Count; j++)//控制Excel中列,左右的距离,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完
31                 {
32                     string str = dt.Rows[i][j].ToString();
33                     excel.Cells[i + 2, j + 1] = "‘" + str;//i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"‘" +是以string形式保存,所以遇到数字不会转成16进制
34                 }
35             }
36         }
37         //设置禁止弹出保存和覆盖的询问提示框
38         excel.DisplayAlerts = false;
39         excel.AlertBeforeOverwriting = false;
40
41         //保存工作簿,值为false会报错
42         excel.Application.Workbooks.Add(true).Save();
43         //保存excel文件
44         excel.Save("D:" + "\\KKHMD.xls");
45
46         //确保Excel进程关闭
47         excel.Quit();
48         excel = null;
49
50     }
51     catch (Exception ex)
52     {
53         MessageBox.Show(ex.Message, "错误提示");
54     }
55 }
56 private void button1_Click(object sender, EventArgs e)
57 {
58     printAll(dt);
59 }
60
61 #endregion  

这不是最好的版本,无论是功能上还是效率上,至少没用SaveFileDialog的话,控制不到取消保存按钮,一旦点击了取消保存,则软件重起之前一直都不能再使用导出功能,只能是手动杀掉进程中的Excel.exe,进程中的Excel.exe也是没有在程序里进行关闭的,所以是使用一次导出功能,就会在进程中多生成一次Excel.exe

原文地址:https://www.cnblogs.com/zgrh/p/11130261.html

时间: 2024-08-04 23:37:16

c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据的相关文章

C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中

实际的开发中,我们会经常遇到数据的转化的需要,将Excel中的数据转入到SQL中,或将SQL在数据库表中的数据导入到Excel中.代码如下: Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo

struts2导出数据到excel中方法(模板方法)

现在的项目需要把用户反馈的信息表中的数据导出到excel的需求.之前做过类似的事情,但是时间已经久远,只能网上搜了一下,对于struts2,基本使用poi的方法,但是感觉网上的方法比较乱及不靠谱(没有开vpn 去google),就把之前的老项目用到的方法拿出来,整理如下,希望对大家有用.确实很简单(对于使用,里面的原理没有深入了解,可能我这边使用的是基本功能,如果需要细致研究,去apache下载jar包的时候,顺便把源码下载下来,这样就可以一目了然了.) 不多说,先从架构(使用步骤,从前端到后端

java代码导出数据到Excel、js导出数据到Excel(三)

jsp内容忽略,仅写个出发按钮: <button style="width: 100px" onclick="expertExcel()" >JS导出Excel</button>           <button style="width: 100px" onclick="expertWord()" >JS导出Word</button>           <button

java poi 写入大量数据到excel中

最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数据量远超65535,建议分sheet处理,而poi3.8之后,出现了SXSSFWorkbook,可以支持大数据量的写入excel操作,但是目前只支持excel2007 HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 XSSF是POI工程对Excel 2007 OOXML

SqlServer表数据与excel中数据的互相复制

一.SqlServer表数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键,复制(也可以点击连同标题复制),复制到记事本中(不然会乱码) 3.然后再把记事本的内容复制,在excel中粘贴就可以了. 二.excel复制到SqlServer表数据 1.打开excel复制数据. 2.用编辑状态打开sql表 3.右键点击表最下面一行左侧的序号,选择粘贴(注意,excel的列一定要和sql表的列对应) 4.如果有自增,不要复制自增字段

如何将页面上的数据导入excel中

网上关于页面数据导入excel的文章很多,但是大部分都是关于 ActiveXObject 对象,可是ActiveXObject 对象是只支持IE的,可我连IE11也测试了,还是无法识别,又查到消息,好像该对象只支持IE7,IE8,所以果断放弃. 继续查找各大论坛,终于找到JsExcelXml的插件, <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></

C#不用COM组件导出数据到Excel中

<?xml version='1.0'?><?mso-application progid='Excel.Sheet'?><Workbook xmlns='urn:schemas-microsoft-com:office:spreadsheet' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns:ss='urn:sch

将Jquery EasyUI中DataGird的数据导入Excel中

1.第一步获取前台DataGrid中的数据 var rows = $('#tb).datagrid("getRows");            if (rows.length == 0) {                $("#ShowMsg").html("没有数据可供导出!");                return;            }            var columns = new Array();       

VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中

Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false '4) 打开已存在的工作簿: oExcel.WorkBooks.Open( "F:\1.xlsx" ) On Error Resume Next '判断是否存在Sheet2工作表,不存在新建 If oExcel.WorkSheets("Sheet2") Is Nothing The