【个人机房重构】—— 将DataGridView中的数据导出到Excel表中㈣

背景:相信,我们大多数人对于DataGrid控件应该很熟悉。在使用VB做第一遍机房收费系统的时候,将DataGrid中的数据导出到Excel表中,是我们经常用到的一个功能。而现在的DataGridView,它可以取代先前版本中DataGrid控件,达到同样的效果。


    在做机房时,将DataGridView中的数据导出到Excel表中,是经常用到的一个功能。在这里,我将从不同的方法来阐释,如何将DataGridView中的数据导出到Excel表中。


方法一、


    这种方法,不需要我们添加任何服务引用,通过代码来达到“将DataGridView中的数据导出到Excel表中”的目的,简单粗暴!


<span style="font-family:KaiTi_GB2312;font-size:18px;">    Public Function ExportExcel(ByVal gvw As DataGridView) As Boolean '导出到Excel函数
        Try
            If gvw.Rows.Count <= 0 Then '判断记录数,如果没有记录就退出
                MessageBox.Show("没有记录可以导出", "没有可以导出的项目", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return False
            Else                        '如果有记录就导出到Excel
                Dim objCreateExcel As Object
                Dim objAddExcel As Object
                objCreateExcel = CreateObject("Excel.Application") '创建Excel对象
                objAddExcel = objCreateExcel.workbooks.add()
                Dim intTitle As Integer
                Dim intRow As Integer
                Dim intColumn As Integer '定义循环变量,行列变量

                '把表头写入Excel
                For intTitle = 0 To gvw.Columns.Count - 1
                    objAddExcel.worksheets(1).cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderCell.Value
                Next

                '用循环添加数据
                For intRow = 0 To gvw.Rows.Count - 1 '行循环
                    For intColumn = 0 To gvw.Columns.Count - 1 '列循环
                        objAddExcel.worksheets(1).cells(intRow + 2, intColumn + 1) = gvw.Item(intColumn, intRow).Value.ToString
                    Next
                Next

                objAddExcel.worksheets(1).Cells.EntireColumn.AutoFit() '自动调整Excel列
                objCreateExcel.visible = True '设置Excel可见作为Excel工作表名称
                objAddExcel = Nothing '释放资源
                objCreateExcel = Nothing '释放资源
            End If
            Return True
        Catch ex As Exception '错误处理
            MessageBox.Show(Err.Description.ToString, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error) '出错提示
            Return False
        End Try
    End Function</span>


使用时:


<span style="font-family:KaiTi_GB2312;font-size:18px;">    Private Sub btnLead_Click(sender As Object, e As EventArgs) Handles btnLead.Click
        Call ExportExcel(DataGridView1)
    End Sub</span>


方法二、


    首先,我们要先添加一个模块(将DataGridView中的数据导出到Excel表中这个方法,经常用到。添加到模块中,以后用的时候,直接调用模块即可。)然后添加服务引用




下边是实现代码:


<span style="font-family:KaiTi_GB2312;font-size:18px;">'********************************************** 
' 文 件 名:ImportToExcel
' 命名空间:UI
' 内    容:
' 功    能:将DataGridView中的数据导出到Excel表中
' 文件关系:
' 作    者:杨晨光
' 小    组:
' 生成日期:2014/8/22 14:27:54
' 版 本 号:V1.0.0.0
' 修改日志:
' 版权说明:
'*********************************************
Imports Microsoft.Office.Interop
Module ImportToExcel
    Public Function ImportToExcel(ByVal gvw As DataGridView) As Boolean '导出到Excel函数
        '建立Excel连接  
        Dim myExcel As New Microsoft.Office.Interop.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 gvw.ColumnCount - 1
            myExcel.Cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderText
        Next intTitle

        '通过循环来添加控件中的数据到表格中  
        For intRow = 0 To gvw.RowCount - 1
            For intColumn = 0 To gvw.ColumnCount - 1
                '由于第一行是表头,所以添加数据时从第二行开始
                myExcel.Cells(intRow + 2, intColumn + 1) = gvw(intColumn, intRow).Value.ToString
            Next intColumn
        Next intRow

        Return True  '添加完毕,返回true  
    End Function
End Module</span>


调用时


<span style="font-family:KaiTi_GB2312;font-size:18px;">Call ImportToExcel.ImportToExcel(DataGridView1)</span>


方法三、

    在看同学的博客时,发现了“使用通过第三方控件”,也能到达我们想要的效果,而且,特别方便。她使用的是一个叫做“NPOI”的东西,详情,请点击《用NPOI将DataGridView中需要的列导出为Excel

后期总结:


    DataGridView它易于使用并高度可定制,支持很多我们的用户需要的特性。 相对于DataGrid控件,有了很大程度上的改进。

    有时候,任何事情的解决并不是只有一种方法。我们完全可以换个角度、换种思维,去思考一下。在我们发现别的解决方案时,通过比较,就会认识到自身考虑事情的局限性。只有这样不断的思考,不断的比较,我们才能进步的更快。

    记住:条条大路通罗马


附:DataGridView控件使用大全


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 31
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值