DataGridView导出数据到Excel及单元格格式的修改
2020-12-13 15:46
标签:datagridview 在软件开发过程中,时常会遇到把一些数据信息从DataGridView中导出到Excel表格中的情况,如果写的多了就会发现挺简单的,我们不妨来写一写,留作备用,毕竟有时候Ctrl+C和Ctrl+V还是比较方便的。 思路很简单,写一个Module,然后调用: Module代码如下: 问题缘由:如果你在DataGridView中显示的有数字,且数字以0开头,则导出Excel后0消失了。(比如某卡号为001,导出后显示为1) 如果仔细想想就会明白,Excel中数字的格式默认为常规(常规单元格格式不包含任何特定的数字格式),所以数字前面的 0 会被去掉。 解决方案:在LeadToExcel模块中,赋值时在数据前加上" ’ " 变为文本格式即可,如下: 举一反三:日期,时间,货币的格式转换都可以按照这个思路来解决。 再领悟:如果当初在设计数据库或写实体时就能考虑到这些情况,而做出适当改变,或许后面的这些问题就不会产生了。(ps:还会遇到其他新的问题,呵呵,这些都需要日后不断的积累经验吧) DataGridView导出数据到Excel及单元格格式的修改 标签:datagridview 原文地址:http://blog.csdn.net/haovip123/article/details/40822995'**********************************************
' 文 件 名: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
点击button调用
Private Sub btnLeadExcel_Click(sender As Object, e As EventArgs) Handles btnLeadExcel.Click
Call LeadToExcel.LeadToExcel(DataGridView1)
End Sub
O(∩_∩)O~大致上就是这样了,但是仍有一些细节需要注意
'通过循环来添加控件中的数据到表格中
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
解决方案再思考:按照上述方法,会把所有的单元格都变成了文本格式,并不一定满足所有情况,于是,需要找到数据所在列了,只在这一列内容的前面加“ ’ ” 就行了。
上一篇:(java实现)双向循环链表
文章标题:DataGridView导出数据到Excel及单元格格式的修改
文章链接:http://soscw.com/essay/35407.html