关于读取Excel表格速度问题?[已解决]
本帖最后由 blue_dvd 于 2012-11-17 08:04 编辑测试过用_ExcelReadCell($oExcel, 行,列)时读取Excel表格的速度好慢,我计算过了,大概36行*10列的表格用了15秒,有没有更快的读取Excel表格的过程或函数?或是在读取过程中,有个图标或文字说明正在读取中!具体给个例子,谢谢!
花了几个小时搜论坛找到一位高手的解答Func _ExcelReadToArrayFast($oExcel, $firstRow=1, $firstCol=1, $lastRow=0, $lastCol=0, $vSheet="")
$usedRange = _ExcelSheetUsedRangeGet($oExcel, $vSheet)
If IsArray($usedRange) Then
If $lastCol = 0 Then $lastCol = $usedRange
If $lastRow = 0 Then $lastRow = $usedRange
Else
Return 0
EndIf
Dim $aFixedArray[$lastRow - $firstRow + 2][$lastCol - $firstCol + 2]
ProgressOn("读取进度", "努力读取中...")
For $i = $firstRow To $lastRow
ProgressSet($i/($lastRow/100), "读取第"&$i&"行 / 总行数"&$lastRow - $firstRow)
$aTempArray = $oExcel.Activesheet.Range($oExcel.Cells($i, $firstCol), $oExcel.Cells($i, $lastCol)).Value
$b = $i - $firstRow + 1
For $a = 0 To ($lastCol - $firstCol)
$c = $a + 1
$aFixedArray[$b][$c] = $aTempArray[$a]
Next
Next
ProgressOff()
Return $aFixedArray
EndFunc ;==>_ExcelReadToArrayFast
读的速度快很多! open your 'help file'
search the keyword : _ExcelReadSheetToArray ,
you'll get a sample :) 最近我也在玩读表格的,只是还没有发现这个速度问题,一楼的好像可以试试哦 回复 2# edisonx
新手都这么厉害! 最快的用sqlite去读 本帖最后由 edisonx 于 2012-11-8 14:46 编辑
回复 4# blue_dvd
不不不,我很弱,都是版上牛人先進不吝指導的。另真要求速度時,勢必如 netegg 兄所言,用 data-base language ( ex: sqlite) 完成。 {:face (332):}{:face (332):} 回复 5# netegg
能否给个详细点的例子? 我也想知道,帮顶 sqlite怎么用 原来写过些,没留着,也想不起来了,扔个网址http://www.connectionstrings.com/excel#85,自己看吧 $oExcel = _ExcelBookOpen(GUICtrlRead($input), 1)
$aArray1 = $oExcel.activesheet.range("a" & 1).resize(100, 20).value 将活动表的 A1开始100行,20列放到数组中。出来的数组是20行,100列。 Excel很方便的办公软件
页:
[1]