请教vb.net中datagridview导出excel的相关问题

liuxg6 2008-07-24 10:02:22
在vb.net中遇到一个问题,请教高手如何解决,谢谢!
vb.net中datagridview另存为excel文件后一些数字数据导出后格式不正确,主要有以下问题:
1、长的数字保存excel后变成了科学计数法,如我的单据号200807000123到excel后2.00807E+11
2、以零开头的数字到excel中零没有了,如我的物料代码012345到excel后成了12345
另存为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
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
End Sub
导出按钮代码:
Call DcExcel(DataGridView1)
...全文
740 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
于之 2009-01-12
  • 打赏
  • 举报
回复
以上的导出生成Excel慢吗?
我估计几千条也会慢得要命!
sjxwb 2008-07-25
  • 打赏
  • 举报
回复
快速的导出方法是用SQL像操作数据库那样来操作Excel
对。但是全导成文本型的,这是美中不足。
ejoe313 2008-07-24
  • 打赏
  • 举报
回复
仅供参考:


Select Case dc.DataType.ToString
Case "System.String"
xlSheet.Cells(rowindex, colindex).NumberFormat = "@"
Case "System.Decimal"
xlSheet.Cells(rowindex, colindex).NumberFormat = "#,##0"
'xlSheet.Cells(rowindex, colindex).NumberFormat = "#,##0.0#"
Case "System.DateTime"
xlSheet.Cells(rowindex, colindex).NumberFormat = "YYYY-MM-DD HH:MM:SS"
End Select
ejoe313 2008-07-24
  • 打赏
  • 举报
回复
wsheet.Cells(iX + 2, iY + 1).value = DGV(iY, iX).Value.ToString
后面加一句
wsheet.Cells(iX + 2, iY + 1).NumberFormat = "@"
格式化一下试试
ejoe313 2008-07-24
  • 打赏
  • 举报
回复
参看2楼,根据各列的数据类型来格式化Excel;

快速的导出方法是用SQL像操作数据库那样来操作Excel,网上有例子的……
liuxg6 2008-07-24
  • 打赏
  • 举报
回复
上面第五行错了,应该是
wsheet.Cells(iX + 2, iY + 1).NumberFormat = "###"


我发的回复怎么不能修改?
liuxg6 2008-07-24
  • 打赏
  • 举报
回复
刚才按照两位的方法试了一下,如果加上:
wsheet.Cells(iX + 2, iY + 1).NumberFormat = "@"
没有变化
后来自己修改成 :
wsheet.Cells(iX + 2, iY + 1).NumberFormat = "@"
上面的问题到是可以解决,但是其他金额数据也就变成了没有小数点的了!
能不能通过修改datagridview中的数据属性解决?如何定义datagridview中列的数据类型?
还有就是按照我上面说的导入excel的方法,是打开一个excel文件然后将数据写入,速度太慢,如何实现直接另存为excel文件?
本人初学,希望回答的详细些,谢谢指教!
rainbowsoftware 2008-07-24
  • 打赏
  • 举报
回复
把单元格格式设置一下

16,717

社区成员

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

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