天天看点

.net中将DataGridView内的数据导出为Excel表格

       对于DataGrid相信大家并不陌生,那DataGridView与他有什么关系呢?关系就是后者是前者的升级版,到了很多优化的功能。比如多种数据显示方式。它们共同的作用的作用是显示多条信息。这篇文章中我们将要解释的是如何将DataGridView中的数据导出到excel表格中。

一.先简单介绍一下DataGridView

DataGridView由两种基本的对象组成:单元格(cell)和组(band)。所有的单元格都继承自DataGridViewCell基类。两种类型的组(或称集合)DataGridViewColumn和DataGridViewRow都继承自DataGridViewBand 基类,表示一组结合在一起的单元格。需要注意的是DataGridView表示单元格的位置为(j,i),   j:表示单元格所在列, i:表示单元格所在行。这与我们平常认知的表示单元格的表示方式不同,需要注意。

二.下面进入正题,导出到excel,代码如下

''' <summary>
    ''' 导出到excel
    ''' </summary>
    ''' <param name="DataGridName">数据表的名字</param>
    ''' <returns>string</returns>
    ''' <remarks>提示:成功</remarks>
    Function ExportExcel(ByVal DataGridName As DataGridView) As String
        Dim xlApp As New Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        xlBook = xlApp.Workbooks.Add()
        xlSheet = xlBook.Worksheets("sheet1")
        xlApp.Visible = True
        '添加表头
        Dim cols As Integer '表头的列数
        For cols = 1 To DataGridName.Columns.Count '将相应列中的数据添加到相应的表格中
            xlSheet.Cells(1, cols) = DataGridName.Columns(cols - 1).HeaderText

        Next
        '添加表中除了表头的数据
        Dim i As Integer
        Dim j As Integer
        For i = 0 To DataGridName.Rows.Count - 1
            For j = 0 To DataGridName.Columns.Count - 1
                If DataGridName(j, i).Value Is System.DBNull.Value Then
                    xlSheet.Cells(i + 2, j + 1) = ""
                Else
                    xlSheet.Cells(i + 2, j + 1) = DataGridName(j, i).Value
                End If
            Next j
        Next i
        Return "导出成功"

    End Function
           

上面的代码定义了一个导出excel的方法,使用时,传递参数直接调用就可以了。代码如有不足,欢迎指正。