`
20386053
  • 浏览: 432816 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
机房收费系统中有一个功能是把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》
程序中如下:

Excel中如下:
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics