DataGridView导出数据到Excel及单元格格式的改动

在软件开发过程中,时常会遇到把一些数据信息从DataGridView中导出到Excel表格中的情况。假设写的多了就会发现挺简单的,我们最好还是来写一写,留作备用,毕竟有时候Ctrl+C和Ctrl+V还是比較方便的。

思路非常easy。写一个Module,然后调用:

Module代码例如以下:

<span style="font-family:Times New Roman;font-size:18px;">‘**********************************************
‘ 文  件  名:LeadToExcel
‘ 命名空间:UI
‘ 功       能:将DataGridView中的数据导出到Excel表中
‘ 作       者:郝贵宝
‘ 生成日期:2014/8/23 10:55:54
‘ 版  本  号:V1.0.0.0
‘ 改动日志:
‘ 版权说明:
‘***********************************************
Imports Microsoft.Office.Interop          ‘加入对Office的引用
Module LeadToExcel
    Function LeadToExcel(ByVal dgv As DataGridView) As Boolean    ‘导出为Excel函数
        ‘建立Excel连接
        Dim myExcel As New Excel.Application()
        myExcel.Application.Workbooks.Add(True)
        myExcel.Visible = True

        ‘定义循环变量,行,列变量
        Dim intRow As Integer
        Dim intColumn As Integer
        Dim intTitle As Integer
        ‘加入表头
        For intTitle = 0 To dgv.ColumnCount - 1
            myExcel.Cells(1, intTitle + 1) = dgv.Columns(intTitle).HeaderText
        Next intTitle

        ‘通过循环来加入控件中的数据到表格中
        For intRow = 0 To dgv.RowCount - 1
            For intColumn = 0 To dgv.ColumnCount - 1
                ‘因为第一行是表头,所以加入数据时:
                ‘Excel中从第二行,第一列(2,1)開始赋值。
                ‘DataGridView从第一行,第一列(0。0)開始赋值(index 从0,0開始)
                myExcel.Cells(intRow + 2, intColumn + 1) = dgv(intColumn, intRow).Value.ToString
            Next intColumn
        Next intRow

        Return True     ‘加入完成,返回true
    End Function

End Module</span>

点击button调用

<span style="font-family:Times New Roman;font-size:18px;">    Private Sub btnLeadExcel_Click(sender As Object, e As EventArgs) Handles btnLeadExcel.Click
        Call LeadToExcel.LeadToExcel(DataGridView1)
    End Sub</span>

O(∩_∩)O~大致上就是这样了,可是仍有一些细节须要注意

问题缘由:假设你在DataGridView中显示的有数字,且数字以0开头,则导出Excel后0消失了。(比方某卡号为001,导出后显示为1)

假设细致想想就会明确。Excel中数字的格式默觉得常规(常规单元格格式不包括不论什么特定的数字格式),所以数字前面的 0 会被去掉。

解决方式:在LeadToExcel模块中,赋值时在数据前加上" ’ "  变为文本格式就可以,例如以下:

<span style="font-family:Times New Roman;font-size:18px;">        ‘通过循环来加入控件中的数据到表格中
        For intRow = 0 To dgv.RowCount - 1
            For intColumn = 0 To dgv.ColumnCount - 1
                ‘因为第一行是表头。所以加入数据时:
                ‘Excel中从第二行,第一列(2。1)開始赋值。
                ‘DataGridView从第一行。第一列(0。0)開始赋值(index 从0,0開始)
                myExcel.Cells(intRow + 2, intColumn + 1) = "‘" + dgv(intColumn, intRow).Value.ToString
            Next intColumn
        Next intRow</span>

解决方式再思考:依照上述方法,会把全部的单元格都变成了文本格式,并不一定满足全部情况,于是,须要找到数据所在列了。仅仅在这一列内容的前面加“ ’ ” 即可了。

举一反三:日期。时间,货币的格式转换都能够依照这个思路来解决。

再领悟:假设当初在设计数据库或写实体时就能考虑到这些情况,而做出适当改变,也许后面的这些问题就不会产生了。(ps:还会遇到其它新的问题,呵呵,这些都须要日后不断的积累经验吧)

时间: 2024-10-10 00:23:59

DataGridView导出数据到Excel及单元格格式的改动的相关文章

DataGridView导出数据到Excel及单元格格式的修改

在软件开发过程中,时常会遇到把一些数据信息从DataGridView中导出到Excel表格中的情况,如果写的多了就会发现挺简单的,我们不妨来写一写,留作备用,毕竟有时候Ctrl+C和Ctrl+V还是比较方便的. 思路很简单,写一个Module,然后调用: Module代码如下: <span style="font-family:Times New Roman;font-size:18px;">'****************************************

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 publi

Excel更改单元格格式后无效

问题描述: 比如修改了数据的自定义显示格式(日期显示 yyyy"年"m"月",手机号分段000-0000-0000),应用后发现只有部分生效,或者都不生效,再检查发现格式确实已经设置好了. 解决方案: 这其实是Excel的格式显示问题,一般双击单元格后格式就会自动修正.对于大量数据,可以选择数据--分列--完成,可以自动刷新.

asp.net使用MVC4框架基于NPOI做导出数据到Excel表

NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本

C#导出数据至excel模板

开源分享最近一个客户要做一个将数据直接输出到指定格式的Excel模板中,略施小计,搞定 其中包含了对Excel的增行和删行,打印预览,表头,表体,表尾的控制 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Reflection; using System

php导出数据到excel,防止身份证等数字字符格式变成科学计数的方-------缺点,必须使用table tr td

php导出数据到excel,防止身份证等数字字符格式变成科学计数的方 时间:2012-08-17 13:50来源:未知 作者:硅峰网络-红豆 点击:219次 在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel的格式为文本格式. 我试用过第一种确实可以显示,但是有个'号在那里感觉确实不是很好,虽然听说不影响,但是需要用户点击那个单元格那个单引号才消失,并且在该 在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel

Delphi 导出数据至Excel的7种方法【转】

转自:http://blog.csdn.net/zang141588761/article/details/52275948 一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :string; a

从DataTable高效率导出数据到Excel

首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: 1 using Microsoft.Office.Interop.Excel; 2 using System.Runtime.InteropServices; 3 4 [DllImport("User32.dll", CharSet = CharSet.Auto)] 5 public static extern int GetWindo

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

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