vb.net datagridview控件导出excel

导出数据的时候,经常需要将软件中的表格导出为excel,学习vb的时候用到了这个功能,当时用的是面向过程的编程方法,哪里需要了,就在哪个窗体写一遍代码。这次,我们使用面向对象的思维再次实现这个功能。对比一下,两个方法有什么区别。

这里使用vb.net作为载体,和面向过程一样,第一步还是要添加引用。为了增加复用性,需要把这个功能做成一个模块,因为是导出数据,所以,把它放到U层,需要在U层添加引用。如图:

将图中画红框的选中就可以了。

然后在U层添加模块,模块代码如下:

Imports Microsoft.Office.Interop.Excel
'引用excel表格内容
''' <summary>
''' 此模块用于将datagridview内容导出为excel
''' </summary>
''' <remarks>dgv作为datagridview控件缩写,当做一个参数</remarks>
Module ExportExcel
    Public Function ExportExcel(ByVal dgv As DataGridView) As Boolean
        '实例化一个excel,创建一个工作簿,工作簿可见
        Dim myExcel As New Microsoft.Office.Interop.Excel.Application
        myExcel.Application.Workbooks.Add(True)
        myExcel.Visible = True
        '导出表头
        Dim i, j, k As Integer
<span style="white-space:pre">	</span>'利用循环,填写表头
        For k = 0 To dgv.ColumnCount - 1
            myExcel.Cells(1, k + 1) = dgv.Columns(k).HeaderText
        Next
        '利用循环嵌套,将datagridview内容放到导出为excel表格
        '这里有两个循环i表示行循环,j为列循环,excel先从行开始循环,excel需要从列开始循环
        For i = 0 To dgv.Rows.Count - 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

这里唯一需要注意的地方是嵌套循环,i循环作为行循环,j循环作为列循环,excel导入数据是从行开始循环的,但是datagridview导出数据却是先从列开始循环的。刚开始不明白,把行和列写错了,运行的时候一直报错。

模块写完之后,只要用到这个功能,只需要调用这个模块即可。

从功能来说,面向过程和面向对象实现的过程是一样的,第一步,添加引用;第二步,创建excel工作簿;第三步,通过循环,将datagridview数据导出excel。从复用性来说,都可以把代码做成模块然后进行调用。通过这些对比,发现,导出excel在面向过程中和面向对象中是没有区别的。

目前正在逐步摸索面向对象的奥妙,如有错误,敬请指正。

vb.net datagridview控件导出excel

时间: 2024-10-11 07:14:10

vb.net datagridview控件导出excel的相关文章

asp.net 控件 导出 excel

//导出EXCEL protected void btnDaoChu_Click(object sender, EventArgs e) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=&

webform 不实用office控件导出excel StringBuilder 类型拼接字符串表格导出excel

StringBuilder sb = new StringBuilder(); sb.AppendLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"); sb.AppendLine("<table border=\"1\">"); sb.Append("<tr&

c# Datagridview控件导入/导出excel表格

在写商业软件的时候,我们会经常遇到对excel表格的操控,最常见的就是Datagridview控件导入/导出excel表格.我也同样遇到了.运用了自己的知识,再加上网上的[大部分]都过期的源码,自己写出了这两个方法,当然,和绑定数据库一样,都用到了databel类. 导入: //private string fileName; /// <summary> /// 将DataGridView中数据导入到Excel /// </summary> /// <param name=&

VB.NET中DataGridView控件

VB.NET中对于表格数据的显示常用到DataGridView控件,其以丰富多样的数据表呈现形式被程序员喜爱. 本人在做一个小系统中运用DataGridView控件的部分属性,这些功能的使用在使用之初比较不易去理清,随着系统接近尾声,现在对一些运用进行整理回顾.控件的很多属性都是相通的,整理回顾,尽量让走的路在后面看起来不是更弯的. 一.如何刷新对DataGridView里面的数据进行增删改查之后的内容 具体实现: 在操作完成之后,再一次调用DataGridView1.DataSource = 

C# DataGridView控件动态添加新行

C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[

C#中DataGridView控件使用大全

DataGridView 动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].

DataGridView控件-[引用]

DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性. 关于本文档: 本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性. 本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践. 大部分章节含有一个"Q &

在DataGridView控件中实现冻结列分界线

我们在使用Office Excel的时候,有很多时候需要冻结行或者列.这时,Excel会在冻结的行列和非冻结的区域之间绘制上一条明显的黑线.如下图: (图1) WinForm下的DataGridView控件也能实现类似的冻结行或者列的功能(参见:http://msdn.microsoft.com/zh-cn/library/28e9w2e1(VS.85).aspx) ,但是呢,DataGridView控件默认不会在冻结列或者行的分界处绘制一个明显的分界线,这样的话,最终用户很难注意到当前有列或者

困扰已久——DataGridView控件填充数据时自动添加列

    机房重构慢慢的走到了尽头,最近正在进行最后的润色中,今天解决了一个困扰许久但是非常简单的问题.我们在查询上机和充值记录时,用到了DataGridView控件.我们在VB版的机房收费系统中也用过类似的,不过显然没有.NET中如此灵活呀!     在填充数据时,我们分明已经写好了控件的列名,可是在填充数据时,会向DataGridView后面自动增加列,然后填充增加的列的数据,效果如下:    解决方法:        其中,DataPropertyName是绑定的数据源或者数据库中对应的字段