====== 代码实现 VB 6 导出数据到 Excel ======

LiuHaoNan 2007-03-12 09:31:31
想从SQL 中读数据导出到 EXCEL 中,数据已取到recordset 中,因为数据大约有7000行,每行有60个字段,所以按每单元格写太慢,要循环420000次,所以想按数据行写,不知道该如何实现?或者有其他方法能实现?



'写数据行
rstTemp.MoveFirst
Do While Not rstTemp.EOF
'每单元格写太慢
For lngTemp = 0 To rstTemp.Fields.Count - 1
xlsSheet.Cells(rstTemp.AbsolutePosition + 1, lngTemp + 1) = rstTemp.Fields(lngTemp).Value
Next lngTemp
rstTemp.MoveNext
Loop

...全文
863 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
proer9988 2007-03-27
  • 打赏
  • 举报
回复
newsheet.Cells.CopyFromRecordset Adodc1.Recordset
没错,就是这个最快!
vansoft 2007-03-27
  • 打赏
  • 举报
回复
CopyFromRecordset
guyehanxinlei 2007-03-27
  • 打赏
  • 举报
回复
操作这样的东西,速度通常比较慢
datou985 2007-03-27
  • 打赏
  • 举报
回复
飞火流星的方法速度还可以
不过也有更快的
这里有三种快速导入EXCEL的方法:
1:mysheet.Cells.CopyFromRecordset Adodc1.Recordset
'该条语句实现把recordset导入excel文件

mybook.SaveAs (filename)
'保存文件
2:BCP方式:
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'
这样导出速度最快,但是它实际上是一个连接,每次打开excel表格,都重新select服务器上的最新数据
3:就是一个cell一个cell的循环进去,这样的方式最慢:等于是一直在操作excel,导入期间严重占用系统资源(不喜欢)
orsharp 2007-03-27
  • 打赏
  • 举报
回复
BenLeak(摇摆人) 不错,大项目我也是这样做的.太复杂的我也不会用,感觉这样也不错.
Estfania 2007-03-26
  • 打赏
  • 举报
回复
Excel.Application
BenLeak 2007-03-26
  • 打赏
  • 举报
回复
http://hi.baidu.com/zyx132/blog/item/76c0f1edda95454f79f05548.html
BenLeak 2007-03-26
  • 打赏
  • 举报
回复
最快的方法:
直接写文件,写为 html 格式的表格文件,使用 Excel 打开另存为 Excel 文件即可
httpchina 2007-03-26
  • 打赏
  • 举报
回复
用您的XLS名称应该这样写 :

xlsSheet.Cells.CopyFromRecordset rstTemp.Recordset
httpchina 2007-03-26
  • 打赏
  • 举报
回复
我试过,1万多条,咔嚓一下搞定
httpchina 2007-03-26
  • 打赏
  • 举报
回复
newsheet.Cells.CopyFromRecordset Adodc1.Recordset
这个最快,^_^
sjb_dl 2007-03-21
  • 打赏
  • 举报
回复
如果是好几万条数据,速度肯定快不了
sjb_dl 2007-03-21
  • 打赏
  • 举报
回复
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim strsql As String
strsql = "select * from aaa"
cn.Open sCon_Stock
rs.Open strsql, cn, adOpenStatic

If rs.EOF = False Then
'另存到XLS文件
Dim omyXLS As New Excel.Application
omyXLS.Visible = False
omyXLS.DisplayAlerts = False
omyXLS.ScreenUpdating = False
omyXLS.Workbooks.Add
omyXLS.Range("a2").CopyFromRecordset rs
sFileName = App.Path & "\rs\库存查询结果" & Format(Now, "YYYYMMDDHHMMSS") & ".XLS"
omyXLS.ActiveWorkbook.SaveAs FileName:=sFileName, FileFormat:=xlNormal, _
PassWord:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

omyXLS.Visible = True
omyXLS.ScreenUpdating = True
omyXLS.DisplayAlerts = True
omyXLS.Application.Quit
Set omyXLS = Nothing
MsgBox "文件已生成,在:" & sFileName
End If
Set rs = Nothing
Set cn = Nothing
goubihui 2007-03-21
  • 打赏
  • 举报
回复
来帮楼主顶顶!希望有更多简单的算法.

snowwolf80 2007-03-21
  • 打赏
  • 举报
回复
这个网上很多代码和例子了,楼主可以搜索下这里以前的老帖子
snowwolf80 2007-03-21
  • 打赏
  • 举报
回复
这个网上很多代码和例子了,楼主可以搜索下这里以前的老帖子
vbman2003 2007-03-21
  • 打赏
  • 举报
回复
NoThin9() 没看清题意吧? 
1.是SQL数据库
2.数据已取到recordset中


:)
NoThin9 2007-03-20
  • 打赏
  • 举报
回复
前提是假设c盘下一个test.mdb
里头有一个表单table1
NoThin9 2007-03-20
  • 打赏
  • 举报
回复
都太复杂了...

来个简单的!希望对你有帮助 :)

Dim acApp As Access.Application

Set acApp = GetObject("c:\test.mdb", "Access.Application")
'打开数据库
acApp.DoCmd.OutputTo acOutputTable, "table1", acFormatXLS, "c:\table1.xls" '转换指定表为Excel文件并存储到指定的目录
acApp.CloseCurrentDatabase
Set acApp = Nothing
MsgBox "ok"
jxdzj 2007-03-20
  • 打赏
  • 举报
回复
mark
加载更多回复(8)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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