DataGridView直接导出EXCEL

lgx1972 2010-06-22 02:31:57
如何直接读取DataGridView中的数据,并导出成Excel可以直接读取的文件
记住,我不要通过DataTable。

希望哪位大侠,能给个通用的模块,谢谢。
...全文
355 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csuchen6 2011-12-01
  • 打赏
  • 举报
回复
感谢楼主!搬上去,完全套上了,花了不到一分钟
the_ether 2011-08-10
  • 打赏
  • 举报
回复
我用了楼主给的程序的,但是打开EXCE的时候会弹出:你尝试打开的文件 格式与文件扩展名指定的格式不同。
DevinXie 2010-06-24
  • 打赏
  • 举报
回复
谢谢分享
JOCKTO 2010-06-23
  • 打赏
  • 举报
回复
非常感谢,又学了一招!!!^_^
threenewbee 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lgx1972 的回复:]
引用 3 楼 caozhy 的回复:
其实这个根本不是excel格式,而是带空格的纯文本格式。
Excel因为可以智能识别很多种格式,所以看上去好像是Excel文档。
不信,你在这个所谓的Excel文档中设置个字体,然后保存看看。


没错,是带格式的文本格式,但是已经可以达到让Excel识别,并且可在Excel中计算,所以目的达到了。
[/Quote]
作为高质量的软件,应该符合规范,你应该使用csv作为后缀名,而不是xls。
fina1982 2010-06-22
  • 打赏
  • 举报
回复
lgx1972 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caozhy 的回复:]
其实这个根本不是excel格式,而是带空格的纯文本格式。
Excel因为可以智能识别很多种格式,所以看上去好像是Excel文档。
不信,你在这个所谓的Excel文档中设置个字体,然后保存看看。
[/Quote]

没错,是带格式的文本格式,但是已经可以达到让Excel识别,并且可在Excel中计算,所以目的达到了。
threenewbee 2010-06-22
  • 打赏
  • 举报
回复
其实这个根本不是excel格式,而是带空格的纯文本格式。
Excel因为可以智能识别很多种格式,所以看上去好像是Excel文档。
不信,你在这个所谓的Excel文档中设置个字体,然后保存看看。
lzsh0622 2010-06-22
  • 打赏
  • 举报
回复
代码不错,还应该处理vbLf:

vbCr & vbLf --> " "
vbLf --> " "
vbTab --> " "

If rowstr.IndexOf(vbCr & vbLf) > 0 Then
rowstr = rowstr.Replace(vbCr & vbLf, " ")
End If
If rowstr.IndexOf(vbLf) > 0 Then
rowstr = rowstr.Replace(vbLf, " ")
End If
If rowstr.IndexOf(vbTab) > 0 Then
rowstr = rowstr.Replace(vbTab, " ")
End If
strLine = strLine + rowstr + Convert.ToChar(9)
lgx1972 2010-06-22
  • 打赏
  • 举报
回复
问题已经解决,谢谢!

Public Sub DataToExcel(ByVal m_DataView As DataGridView)
Dim kk As New SaveFileDialog()
kk.Title = "保存EXECL文件"
kk.Filter = "EXECL文件(*.xls) |*.xls |所有文件(*.*) |*.*"
kk.FilterIndex = 1
If kk.ShowDialog() = DialogResult.OK Then
Dim FileName As String = kk.FileName ' + ".xls"
If File.Exists(FileName) Then
File.Delete(FileName)
End If
Dim objFileStream As FileStream
Dim objStreamWriter As StreamWriter
Dim strLine As String = ""
objFileStream = New FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write)
objStreamWriter = New StreamWriter(objFileStream, System.Text.Encoding.Unicode)
For i As Integer = 0 To m_DataView.Columns.Count - 1
If m_DataView.Columns(i).Visible = True Then
strLine = strLine + m_DataView.Columns(i).HeaderText.ToString() + Convert.ToChar(9)
End If
Next
objStreamWriter.WriteLine(strLine)
strLine = ""

For i As Integer = 0 To m_DataView.Rows.Count - 1
If m_DataView.Columns(0).Visible = True Then
If m_DataView.Rows(i).Cells(0).Value Is Nothing Then
strLine = (strLine & " ") + Convert.ToChar(9)
Else
strLine = strLine + m_DataView.Rows(i).Cells(0).Value.ToString() + Convert.ToChar(9)
End If
End If
For j As Integer = 1 To m_DataView.Columns.Count - 1
If m_DataView.Columns(j).Visible = True Then
If m_DataView.Rows(i).Cells(j).Value Is Nothing Then
strLine = (strLine & " ") + Convert.ToChar(9)
Else
Dim rowstr As String = ""
rowstr = m_DataView.Rows(i).Cells(j).Value.ToString()
If rowstr.IndexOf(vbCr & vbLf) > 0 Then
rowstr = rowstr.Replace(vbCr & vbLf, " ")
End If
If rowstr.IndexOf(vbTab) > 0 Then
rowstr = rowstr.Replace(vbTab, " ")
End If
strLine = strLine + rowstr + Convert.ToChar(9)
End If
End If
Next
objStreamWriter.WriteLine(strLine)
strLine = ""
Next
objStreamWriter.Close()
objFileStream.Close()
MessageBox.Show(Me, "保存EXCEL成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧