第一种方法较慢,但是数据格式都比较好,需要引用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. ext树表

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2UAAAHwCAIAAACpIFDdAAAgAElEQVR4nOy9f5Qb5ZnvWWQZlnO5Oc ...

  2. Windows下进程间通信及数据共享

    进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系统的一个基本特征.Microsoft W ...

  3. hdu 2639 第k大01背包

    求每个状态里的k优解,然后合并 /* HDU 2639 求01背包的第k大解. 合并两个有序序列 */ #include<stdio.h> #include<iostream> ...

  4. GRE红宝书5-6

    page5 adopt: adoration: adore:   --ore讲话, oration演讲 adorn:   orn表示装饰, ornate adulation:      adulate ...

  5. Android开发之日历控件实现

    Android开发之日历控件实现:以下都是转载的. 日历控件 日历控件 日历控件 日历控件

  6. ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component解决

    第一:先确定一下开发流程是否正确 1.写好servlet组件类 2.写好web.xml文件--向服务器介绍组件 3.发布--就是拷贝 注意:要拷贝包结构,不要只拷贝组件类文件 另外,拷贝的是.clas ...

  7. 食物链 poj 1182

    C - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  8. DOM--1 遵循最佳实践

    为重用命名空间而进行规划 (function() { function $(id) { return document.getElementById(id); } function alertNode ...

  9. HazelCast 的内存管理原理

    As it is said in the recent article "Google: Taming the Long Latency Tail - When More Machines ...

  10. POJ 3281 (最大流+匹配+拆点)

    题目链接:http://poj.org/problem?id=3281 题目大意:有一些牛,一堆食物,一堆饮料.一头牛要吃一份食物喝一份饮料才算满足,而且牛对某些食物和饮料才有好感,问最多有多少头牛是 ...