天天看点

机房收费系统总结之6——DataGridView导出为Excel

        机房收费系统中有一个功能是把DataGridView导出为Excel。其实中难,正所谓“难者不会,会者不难”,下面就进行一下简要介绍。

        形象起见,先看图:

机房收费系统总结之6——DataGridView导出为Excel

一、添加引用

机房收费系统总结之6——DataGridView导出为Excel

二、代码实现(DataGridView控件在此处命名为:dgvInfo)

'1.实例化工作簿  
        Dim MyExcel As New Microsoft.Office.Interop.Excel.Application()

        '2.添加表  
        MyExcel.Application.Workbooks.Add()

        '3.打开表  
        MyExcel.Visible = True

        '4.导出数据
        '   1)获取datagridview的标题行赋给Excel,Excel标题行第一列标识为1,datagridview则为0,所以为Cols-1  
        Dim Cols As Integer
        For Cols = 1 To dgvInfo.Columns.Count
            MyExcel.Cells(1, Cols) = dgvInfo.Columns(Cols - 1).HeaderText
        Next
        '   2)往excel表里添加数据()  
        Dim intRow As Integer
        For intRow = 0 To dgvInfo.RowCount - 1
            Dim intColumn As Integer
            For intColumn = 0 To dgvInfo.ColumnCount - 1
                If Me.dgvInfo(intColumn, intRow).Value Is System.DBNull.Value Then
                    MyExcel.Cells(intRow + 2, intColumn + 1) = ""    'Excel的第一行是标题,所以应从第二行开始,即:intRow+2 注意DataGridView的坐标是先列后行  
                Else
                    MyExcel.Cells(intRow + 2, intColumn + 1) = dgvInfo(intColumn, intRow).Value.ToString

                End If
            Next intColumn
        Next intRow           

注意

        1.DBNull 类表示一个不存在的值。例如,在数据库的表中,某一行的某列中可能不包含任何数据。即,该列被视为根本不存在,而不只是没有值。一个表示不存在的列的 DBNull 对象。

        2.字符中以“0”开头的显示问题。看下图,其中程序中显示卡号的是“01”,而到了Excel中却变成了“0”,何故?在做第一遍机房收费系统时曾遇见过类似问题,请看博客《MSHFlexGrid中的数据导出为Excel》

                            程序中如下:

机房收费系统总结之6——DataGridView导出为Excel

                             Excel中如下:

机房收费系统总结之6——DataGridView导出为Excel

继续阅读