如何最快的生成数据量巨大的excel文件?

chatroom 2003-05-10 03:19:44
对于几千行,好几十个字段的excel文件,创建excel对象后写入的方法好像比较慢。而且好像越到后面,写的越慢。有没有很快生成的方法呢?大家帮忙讨论一下啊!
...全文
258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
icansaymyabc 2003-05-12
  • 打赏
  • 举报
回复
Public Declare Function timeGetTime Lib "winmm.dll" () As Long


Const colbound As Long = 3
Const rowbound As Long = 30000
Dim dat(1 To rowbound, 1 To colbound) As Long


Private Sub Command1_Click()
Dim ts As Long, t0 As Long
Dim i As Long, j As Long
Dim xlsapp As New Excel.Application
Dim xls As Excel.Workbook
Dim sheet As Excel.Worksheet

Set xls = xlsapp.Workbooks.Add
Set sheet = xls.Worksheets(1)

ts = timeGetTime()
For i = 1 To rowbound
For j = 1 To colbound
dat(i, j) = i * j
Next
Next
sheet.Range(sheet.Cells(1, 1), sheet.Cells(rowbound, colbound)) = dat
t0 = timeGetTime() - ts
'编译成EXE后,像这样进行3万行的共10万个赋值只需要 300 毫秒。

xls.SaveAs "C:\aaa.xls"
xls.Close

End Sub
anole2003 2003-05-12
  • 打赏
  • 举报
回复
1. Application.ScreenUpdating = False
2.可以将设数据先读入一个数组中,再一次性的赋给,可明显提高速度
Sub test()
Dim aa(3) As Integer
aa(0) = 1
aa(1) = 2
aa(2) = 3
Range(Cells(1, 1), Cells(1, 3)) = aa
End Sub
3. 想办法减少计算式,减小文件.(重复的计算式用VBA代替,将会使文件小很多,从而提高速度.)
到后来慢是因为EXCEL文件过大,消耗内存将过大.EXCEL2000的内存最大为128M.
chatroom 2003-05-11
  • 打赏
  • 举报
回复
创建纯文件后,怎样导入呢?
zara 2003-05-11
  • 打赏
  • 举报
回复
手工做是从菜单 "数据"."获取外部数据"."导入文本文件" 进行的. 用代码的话, 我也不太熟悉, 你自己录制一个宏看看Excel自己的代码吧. 关键是最后的.Refresh:
With ...
...
.Refresh BackgroundQuery:=False
' 以BackgroundQuery为False进行更新就断开了插入的数据和源的链接, 插入的数据就独立了
zara 2003-05-10
  • 打赏
  • 举报
回复
以前有人建议是先创建特定分割符的纯文件文件, 再进行导入.
ReplyRobot 2003-05-10
  • 打赏
  • 举报
回复
UP

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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