新浪博客

vb6.0 如何快速读取excel数据?

2015-05-16 23:39阅读:
当使用vb读取excel中大量数据时,比如几十万,如果使用cells方法逐个读取则会非常慢(几分钟到十几分钟)。网上提供的解决方法大多是让excel文件另存为csv格式。但是当excel文件很多时这样做也会非常麻烦。使用vba宏的方法就快很多(一到两秒钟),当然也存在批量处理的问题。为什么vba宏移植到vb中就不行了呢?网上说是接口的问题。就在放弃时突然找到一种方法,试了一下效果vba一样快,关键的是vb可以批量处理,避免了vba宏和逐个另存为的麻烦。而且大数据文件使用excel2003版存在数量限制,而excel2007以上版本对vba的支持度不好(至少不够方便、稳定)。因此在vb中处理这个问题很有必要。下面说一下解决措施,其实非常简单,就一条关键代码:
首先引用Microsoft excel11.0 Object Library。
Private Sub Command1_Click()
Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook

Dim tmppath As String
Dim data(1 To 256, 1 To 900) As Single
Dim datatmp As Variant
Dim i As Long, j As Long


Set xlsApp = Excel.Application
xlsApp.Visible = False
Set xlsApp = CreateObject('Excel.Application')

tmppath = App.Path + '\1.xls'
Set xlsBook = xlsApp.Workbooks.Open(tmppath)

datatmp = xlsApp.Range(Cells(1, 1), Cells(900, 256)) '关键代码

For j = 1 To 900
For i = 1 To 256
data(i, j) = datatmp(j, i)
Next i
Next j

xlsBook.Close

tmppath = App.Path + '\2.xls'
Set xlsBook = xlsApp.Workbooks.Open(tmppath)

datatmp = xlsApp.Range(Cells(1, 1), Cells(900, 256)) '关键代码

For j = 1 To 900
For i = 1 To 256
data(i, j) = datatmp(j, i)
Next i
Next j

xlsBook.Close

xlsApp.Quit
Set xlsBook = Nothing
Set xlsApp = Nothing

MsgBox 'success'

End Sub

我的更多文章

下载客户端阅读体验更佳

APP专享