您的位置:首页 > 其它

Datagridview学习心得之三Datagridview转成EXCEL

2010-12-25 21:10 246 查看
作为数据显示的一个控件datagridview,经常有用户问我能不能直接将显示出来的数据转到EXCEL里面使用,以前我常用的方式就是先转成水晶报表,然后再利用水晶报表的转换功能将数据转到EXCEL里面,或者还有一种方式,就是在程序里引用EXCEL,然后直接对EXCEL文件操作,这种方式使用起来比较灵活,但是也比较麻烦,一是要添加对EXCEL文件的引用,二是正因为灵活,所以也比较复杂,中间控制起来比较不方便。通过一段时间的学习,我找到了另一种方式,即以文件流的方式直接写入到一个EXCEL文件里。我们先看一段代码:

Public SubGv_ExportToExcel(ByVal _Gr As DataGridView, ByVal_File_path As String)

'直接将DATAGRIDVIEW 转为EXCEL文件,参数一、需要转出的datagridview,参数二、转出的文件路径名称.

Dim row_num As Integer = _Gr.Rows.Count- 1 '得到总行数

Dim cell_num As Integer = _Gr.ColumnCount- 1 '得到总列数

Dim i, j AsInteger

Dim myStream As IO.Stream

Dim sw As IO.StreamWriter

Dim v_Title, v_ValuesAs String

Dim fs As System.IO.FileStream = Nothing

If IO.File.Exists(_File_path)Then

‘判断输出的文件是否已被打开

Try

fs = New System.IO.FileStream(_File_path,IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.Write)

If Not fs.CanWrite Then ‘文件不能被写入,说明文件已经被占用

MsgBox("报表文件已经打开,请先关闭!!", MsgBoxStyle.OkOnly, "警告")

ExitSub

End If

Catchex As Exception

MsgBox("报表文件已经打开,请先关闭!!", MsgBoxStyle.OkOnly, "警告")

ExitSub

Finally

Iffs IsNot NothingThen

fs.Close()

fs.Dispose()

EndIf

EndTry

IO.File.Delete(_File_path)

End If

myStream = IO.File.Open(_File_path, IO.FileMode.OpenOrCreate)

‘开启文件,如果文件不在存在则建立该文件.

sw = NewIO.StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0))

Try

v_Title = ""

For i = 0 To cell_num 获取DATAGRIDVIEW的列表题做为EXCEL的标题

v_Title += _Gr.Columns(i).HeaderText

v_Title += vbTab

Next

sw.WriteLine(v_Title) ‘写入EXCEL列标题

Fori = 0 To row_num

v_Values = ""

Forj = 0 To cell_num ‘获取每一行的数据

v_Values += _Gr.Rows(i).Cells(j).Value.ToString

v_Values += vbTab

Next

sw.WriteLine(v_Values) ‘写入数据到EXCEL

Next

sw.Close()

myStream.Close()

If IO.File.Exists(_File_path)Then‘最后打开EXCEL文件

System.Diagnostics.Process.Start(_File_path)

EndIf

Catch ex As Exception

MsgBox("转EXCEL出错,代码为!!" + ex.ToString, MsgBoxStyle.OkOnly,"警告")

ExitSub

Finally

sw.Close()

myStream.Close()

End Try

End Sub

这样一段小代码,基本就可以解决所有DATAGRIDVIEW转EXCEL的问题了,你只需要在DATAGRIDVIEW控件上增加一个右键菜单转EXCEL,再调用这一段函数,就可以将任意一个DATAGRIDVIEW转化成EXCEL文件了,相比起来,这种方式比前两种方式更直接和好用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: