第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll  office.dll

#Region "导出excel函数"

Public Sub DcExcel(ByVal DGV As DataGridView)
        '把datagridview中的数据导出到excel
        Dim wapp As New Microsoft.Office.Interop.Excel.Application
        Dim wsheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim wbook As Microsoft.Office.Interop.Excel.Workbook

On Error Resume Next

'///是否预览显示///

wapp.Visible = True
        wbook = wapp.Workbooks.Add()
        wsheet = wbook.ActiveSheet

Dim iX As Integer
        Dim iY As Integer
        Dim iC As Integer

For iC = 0 To DGV.Columns.Count - 1
            wsheet.Cells(1, iC + 1).Value = DGV.Columns(iC).HeaderText
            wsheet.Cells(1, iC + 1).Font.Bold = True
            wsheet.Cells(1, iC + 1).Font.Size = 14

Next

wsheet.Rows(2).select()
        For iX = 0 To DGV.Rows.Count - 1
            For iY = 0 To DGV.Columns.Count - 1
                wsheet.Cells(iX + 2, iY + 1).value = DGV(iY, iX).Value.ToString
            Next
        Next

'///判断是否存储excel文件///

'Dim myval As Long
        'Dim mystr As String
        'myval = MessageBox.Show("是否保存该Excel表?", "提示窗口", MessageBoxButtons.YesNo)

'判断ok还是no
        'Dim myvals As DialogResult
        'If myvals = DialogResult.OK Then

'End If

'If myval = vbYes Then
        '    mystr = InputBox("请输入文件名称", "输入窗口")
        '    If Len(mystr) = 0 Then
        '        MsgBox("系统不允许文件名称为空!", 64, "提示窗口")
        '        Exit Sub
        '    End If

'    wsheet.SaveAs(System.Windows.Forms.Application.StartupPath & mystr & ".xls")
        '    MsgBox("Excel文件保存成功,位置:" & System.Windows.Forms.Application.StartupPath & mystr & ".xls", 64, "提示窗口")
        '    wapp.Quit()
        'End If

End Sub

#End Region

以下两种方法以流的方式无需引用excel dll,格式不是很稳定,有时候列里面的数据的错乱了,还是不喜欢它们,需要导入import system.io

#Region "导出excel,无需引用excel dll"
    Public Function daochu(ByVal x As DataGridView) As Boolean '导出到Excel函数
        Try
            If x.Rows.Count <= 0 Then '判断记录数,如果没有记录就退出
                MessageBox.Show("没有记录可以导出", "没有可以导出的项目", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return False
            Else '如果有记录就导出到Excel
                Dim xx As Object : Dim yy As Object
                xx = CreateObject("Excel.Application") '创建Excel对象
                yy = xx.workbooks.add()
                Dim i As Integer, u As Integer = 0, v As Integer = 0 '定义循环变量,行列变量
                For i = 1 To x.Columns.Count '把表头写入Excel
                    yy.worksheets(1).cells(1, i) = x.Columns(i - 1).HeaderCell.Value
                Next
                Dim str(x.Rows.Count - 1, x.Columns.Count - 1) '定义一个二维数组
                For u = 1 To x.Rows.Count '行循环
                    For v = 1 To x.Columns.Count '列循环
                        If x.Item(v - 1, u - 1).Value.GetType.ToString <> "System.Guid" Then
                            str(u - 1, v - 1) = x.Item(v - 1, u - 1).Value
                        Else
                            str(u - 1, v - 1) = x.Item(v - 1, u - 1).Value.ToString
                        End If
                    Next
                Next
                yy.worksheets(1).range("A2").Resize(x.Rows.Count, x.Columns.Count).Value = str '把数组一起写入Excel
                yy.worksheets(1).Cells.EntireColumn.AutoFit() '自动调整Excel列
                ' yy.worksheets(1).name = x.TopLeftHeaderCell.Value.ToString '表标题写入作为Excel工作表名称
                xx.visible = True '设置Excel可见
                yy = Nothing '销毁组建释放资源
                xx = Nothing '销毁组建释放资源
            End If
            Return True
        Catch ex As Exception '错误处理
            MessageBox.Show(Err.Description.ToString, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error) '出错提示
            Return False
        End Try
    End Function
#End Region

#Region "从DataGridView中导出数据到Excel"
    Public Sub dataGridViewToExcel(ByVal dgv As DataGridView)

Dim saveFileDialog As New SaveFileDialog()
        saveFileDialog.Filter = "Execl files (*.xls)|*.xls"
        saveFileDialog.FilterIndex = 0
        saveFileDialog.RestoreDirectory = True
        saveFileDialog.CreatePrompt = True
        saveFileDialog.Title = "导出 Excel 文件到"
        saveFileDialog.ShowDialog()
        If saveFileDialog.ShowDialog() = DialogResult.Cancel Then
            '如果选择提醒导出
            Return
        End If
        Dim myStream As Stream
        myStream = saveFileDialog.OpenFile()

'StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));

Dim sw As New StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0))
        Dim str As String = ""

Try
            '写标题

For i As Integer = 0 To dgv.ColumnCount - 1

If i > 0 Then

str += vbTab
                End If

str += dgv.Columns(i).HeaderText
            Next

sw.WriteLine(str)

'写内容

For j As Integer = 0 To dgv.Rows.Count - 1

Dim tempStr As String = ""

For k As Integer = 0 To dgv.Columns.Count - 1

If k > 0 Then

tempStr += vbTab
                    End If

tempStr += dgv.Rows(j).Cells(k).Value.ToString()
                Next

sw.WriteLine(tempStr)
            Next

sw.Close()

myStream.Close()

Catch ex As Exception

MessageBox.Show(ex.ToString())
        Finally

sw.Close()

myStream.Close()
        End Try
    End Sub
#End Region

vb.net-三种将datagridview数据导出为excel文件的函数的更多相关文章

  1. Hive中的三种不同的数据导出方式介绍

    问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...

  2. Hive三种不同的数据导出的方式

    转自:http://blog.chinaunix.net/uid-27177626-id-4653808.html Hive三种不同的数据导出的方式,根据导出的地方不一样,将这些方法分为三类:(1)导 ...

  3. Asp.net网页中DataGridView数据导出到Excel

    经过上网找资料,终于找到一种可以直接将GridView中数据导出到Excel文件的方法,归纳方法如下: 1. 注:其中的字符集格式若改为“GB2312”,导出的部分数据可能为乱码: 导出之前需要关闭分 ...

  4. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  5. C#将数据集DataSet中的数据导出到EXCEL文件的几种方法

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...

  6. VB将MSHFlexGrid数据导出到Excel文件通用功能

    1.通用导出Excel功能. 2.将 MSHFlexGrid数据导出到Excel文件通用功能. 3.具体代码如下: '将下列代码保存到一模块文件中,调用方法:Export fgrid1,cd1 Pub ...

  7. 用node.js写一个简单爬虫,并将数据导出为 excel 文件

    引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...

  8. 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  9. Qt中将QTableView中的数据导出为Excel文件

    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...

随机推荐

  1. POJ 2549 Sumsets hash值及下标

    题目大意:找到几何中的4个数字使他们能够组成 a+b+c=d , 得到最大的d值 我们很容易想到a+b = d-c 那么将所有a+b的值存入hash表中,然后查找能否在表中找到这样的d-c的值即可 因 ...

  2. jQuery常规选择器

    //简单选择器$('div').css('color','red'); //元素选择器,返回多个元素$('#box').css('color','red');//id选择器,返回单个元素$('.box ...

  3. SQL 外键

    先新建2个表,写入数据 -- 创建测试主表. ID 是主键. CREATE TABLE test_main ( id INT, value ), PRIMARY KEY(id) ); -- 创建测试子 ...

  4. Java Hour3

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 本文作者Java 现经验约为2 Hour,请各位不吝赐教. Hour3 包和i ...

  5. c++ 复习内容

    . ]) { sizeof(str)=? } :// 函数行参仅是一个指针 . Typedef struct s* tPs; tPs p3,p4;//相等 struct s*p3,struct s*p ...

  6. jQuery+PHP实现浏览更多内容

    Ajax加载的基本原理:当页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“查看更多”的链接,通过触发该链接,向服务端发送Ajax请求,后台 ...

  7. 【codevs1191】数轴染色 线段树 区间修改+固定区间查询

    [codevs1191]数轴染色 2014年2月15日4317 题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色.接着我们进行M次操作,第i次操作将[L ...

  8. 5.AsyncHttp、post

    httpClient // 网络访问请求 new Thread(new Runnable() { @Override public void run() { String url = "ht ...

  9. SU Demos 03T-F Analysis-03Suphasevel

    不足之处,欢迎批评指正. 1.先看readme,共有3个脚本. 第1个脚本用到的模型文件. 2.第1个脚本 运行结果 3.第2个脚本 4.第3个脚本

  10. 移动零售批发行业新的技术特色-智能PDA手持移动扫描打印销售开单收银仪!!

    提起便利店或者超市,大家的第一印象一定是前台那个笨重的POS机和站在POS机后的收银员.传统的零售店中,笨重的POS机随处可见. 变革前,零售盘点多烦忧 一个顾客要结账,就需要通过POS机.小票打印机 ...