• .Net中DataGridview数据如何导出到excel表


         首先,这个问题在网上有很多答案,也有很多解决的方法。其次,很多人写过类似的博客 。我的这篇博客,主要是写给那些刚刚接触或接触不久.NET并使用其做程序的人,更是写个自己,记录一下方法,方便以后使用。

        在窗体中添加一个DataGridView控件,DatagridView获得数据: DataGridView1.DataSource = crList(泛型)或DataGridView1.DataSource=DataSet.Table(0)。{注意:通过查询数据库,将查询到的数据放入crList或Dataset中,然后赋值给DataGridView)

        若想导出数据到Excel表,需要添加引用(项目-添加引用-Microsoft.Office.Interop.Excel).

        剩下的就是代码了。下面是我的代码,仅供参考。(把导出Excel表做成了一个类,这样整个程序都可以直接调用这个类,实现导出数据到Excel表)

    <span style="font-size:18px;">       '打开Excel的应用程序
            Dim ExcelADD As New Excel.Application()
    
            '添加一个工作本
            Dim ExcelWordBook As Excel.Workbook = <span style="font-size:18px;">ExcelADD</span>.Workbooks.Add()
    
            '添加一个表
            Dim ExcelWorkSheet As Excel.Worksheet = <span style="font-size:18px;">ExcelWordBook</span>.Sheets("sheet1")
    
            '显示Excel
            <span style="font-size:18px;">ExcelADD</span>.Visible = True
    
            '用于将DataGridView中的表赋值到Excel中的表中
            Dim i As Integer
            Dim j As Integer
    
            '将DataGridView中的字段名赋值给Excel表中的第一行
            Dim Cols As Integer
            For Cols = 1 To x.Columns.Count
                xlWorkSheet.Cells(1, Cols) = x.Columns(Cols - 1).HeaderText
    
            Next
    
            '将DataGridView表格中的内容导入到Excel表中
            For i = 0 To x.RowCount - 1
                'DataGrideView中的表头行不作为行数来计算
                For j = 0 To x.ColumnCount - 1
                    'Excel的第一行是标题,所以应从第二行开始,i+2 注意DataGridView的坐标是先列后行
                    xlWorkSheet.Cells(i + 2, j + 1) = x(j, i).Value.ToString()
    
                Next
            Next
    
    </span> 
    

        注意:DataGridView的属性里有一个AllowUsersToAddRows属性,要设置成False,否则For i = 0 To x.RowCount - 1要改写成For i = 0 To x.RowCount - 2,同时,系统也容易出现错误,不过,还是可以尝试一下。

       小结:在做这一块的时候,出现了很多问题,尤其是在用嵌套循环时,如果设置不对,常常出现导出时丢失行,数据超出范围,或者不按你想的方式导出,总之 我出现了各种问题,通过查询各种信息,学长学姐的博客,一个个解决掉了,解决后才发现,问题都是非常小的问题,却又是非常不好找的问题,非常小的细节,而且是那些你认为不会出错的地方。做事要细心,做程序更要细心,这篇博客,即使写给自己,也写给大家,一句话:“做程序必须细心在细心。”

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Pycharm 调试system-config-users
    只写了两行代码,为什么要花两天时间?
    为开源做贡献的6个技巧
    2020年10月编程语言排行榜
    全球最厉害的 14 位程序员
    6_38_二叉树的后序遍历非递归算法(和先序有些许不一样)
    6_37_二叉树的先序遍历非递归算法
    6_36_相似二叉树
    6_33_两个一维数组判断u是否为v的子孙
    6_34_扩展判断u是否为v的子孙
  • 原文地址:https://www.cnblogs.com/lucari/p/4608569.html
Copyright © 2020-2023  润新知