【机房重构】——DataGridView导出Excel


前言


  刚刚需要用到这个功能的时候,完全是去百度的,并且是直接百度功能,对于是用的什么函数啊,什么方法啊,根本就不知道,完全都是照着誊下来的。


  所谓,欠下的早晚要还的,现在终于到了偿还的时候了。


正文

  

  在第一次机房重构时导出Excel完全就是抄的,这次依旧,所以一直感觉很是神秘的一个功能。

  经过查找资料之后,突然就豁然开朗了。


  首先,现在U层添加引用,选择程序集中扩展中的Microsoft.Office.Interop.Excel

  在这里我有一个疑问。

  在添加引用时其中有程序集和COM,程序集中又分了框架和扩展,我不懂的是:

  框架、扩展、COM中的类型库,三者中分别包含的内容有什么区别?每次添加引用时总不知道该去哪找。


  回到正题,添加引用之后在U层添加代码

Imports Microsoft.Office.Interop.Excel

  我们在这里将这个功能写成模块放在U层中,以供重复使用。

Module Exportexcel
    Public Function ExportExcel(ByVal dgv As DataGridView) As Boolean
        ' 实例化一个excel,创建一个工作簿,工作簿可见

        Dim myExcel As New Microsoft.Office.Interop.Excel.Application
        ' Application代表整个Excel的应用程序

        myExcel.Application.Workbooks.Add(True)
        ' 返回一个工作簿的集合表示所有打开的工作簿

        myExcel.Visible = True
        '  工作簿可见

        Dim i, j As New Integer

        '  因为在DataGridView中表头内容和表格中的内容获取所用的函数不同,所以需要分用两个循环向Excel中填写数据
        ' 利用循环,填写表头
        For i = 0 To dgv.ColumnCount - 1
            myExcel.Cells(1, i + 1) = dgv.Columns(i).HeaderText
        Next

        ' 利用嵌套循环,将datagridview内容放到导出为excel表格
        ' 这里有两个循环i表示行循环,j为列循环,Excel先从行开始循环,DataGridView需要从列开始循环
        ' DataGridView中除去表头,表格的坐标从(0,0)开始,而Excel中单元格表示从(1,1)开始。
        For i = 0 To dgv.RowCount - 1
            For j = 0 To dgv.ColumnCount - 1
                myExcel.Cells(i + 2, j + 1) = dgv(j, i).Value.ToString
            Next
        Next
        Return True

    End Function
End Module

   这里有几个需要注意的地方:


  1.利用嵌套循环向Excel中填充数据时,i表示行,就表示列,Excel中从行开始循环DataGridView中从列开始循环

  2.Excel中单元格的坐标从(1,1)为起始单元格,DataGridView中(0,0)为起始单元格。


  如果对于代码还有哪些不理解或者想进一步了解相关类和方法的话,可以参考相关文章或者与我交流

  

  文章还有不足之处,欢迎指正。

  

总结


    所谓好借好还,再接不难


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值