vb.net-三种将datagridview数据导出为excel文件的函数
第一种方法较慢,但是数据格式都比较好,需要引用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文件的函数的更多相关文章
- Hive中的三种不同的数据导出方式介绍
问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...
- Hive三种不同的数据导出的方式
转自:http://blog.chinaunix.net/uid-27177626-id-4653808.html Hive三种不同的数据导出的方式,根据导出的地方不一样,将这些方法分为三类:(1)导 ...
- Asp.net网页中DataGridView数据导出到Excel
经过上网找资料,终于找到一种可以直接将GridView中数据导出到Excel文件的方法,归纳方法如下: 1. 注:其中的字符集格式若改为“GB2312”,导出的部分数据可能为乱码: 导出之前需要关闭分 ...
- 学习笔记 DataGridView数据导出为Excel
DataGridView数据导出为Excel 怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...
- C#将数据集DataSet中的数据导出到EXCEL文件的几种方法
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...
- VB将MSHFlexGrid数据导出到Excel文件通用功能
1.通用导出Excel功能. 2.将 MSHFlexGrid数据导出到Excel文件通用功能. 3.具体代码如下: '将下列代码保存到一模块文件中,调用方法:Export fgrid1,cd1 Pub ...
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...
- 数据导出至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; ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
随机推荐
- MFC 密码框
使用Edit Control 在属性面板中,设置“行为”为password
- 如何识别是visual studio下头的哪种类型程序
可以通过文件来判断 比如MFC, 那它就会包括xxxview.cpp文件. win32又分为win32项目和console(即控制台应用程序),看主函数 win32控制台应用程序的主函数为_tmain ...
- caffe 无GPU 环境搭建
root@k-Lenovo:/home/k# sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-d ...
- Android中JNI 的一些常用Method说明
Android JNI和NDK关系 1.什么JNI Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程 ...
- Mac OS X 上的安装haskell开发环境
到haskell官方下载haskell的工具包: https://downloads.haskell.org/~platform/2014.2.0.0/Haskell%20Platform%20201 ...
- php session跨页面传递 session值丢失问题
.session_start();应该尽量放置到页面的顶部: .如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_sta ...
- acm常用术语
OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性. Accepted (AC) : OK! Your program is correct! Presentation Erro ...
- Windows 程序支持 Unicode
宽字符 阅读了 UTF-8 Everywhere 一文,推荐在程序中对于字符串都使用 UTF-8 编码.Unix-like 系统默认是支持 UTF-8 编码的Unicode字符串,标准库函数也默认支持 ...
- UVA 1328 - Period KMP
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36131 题意:给出一个长度为n的字符串,要求找到一些i,满足说从1 ...
- sql 遍历结果print和表格形式
select * from tb_province --省 pID pName1 北京市2 天津市3 上海市4 重庆市5 河北省6 山西省....... select * from tb_city - ...