#include <Excel.au3>
Global $sUrl = @ScriptDir & '\65536_table.htm', $sSourse, $aTable, $iUb, $hFile, $iColumn = 17, $iRow, $oObjEr, $iObjEr, $oExcel, _
$sTmpFile, $iTmp, $iTimer, $iAllTimer
$sExcelFile = StringLeft($sUrl, StringInStr($sUrl, '.', 0, -1) - 1)
$sTmpFile = $sExcelFile & '.txt'
$oObjEr = ObjEvent('AutoIt.Error', '_Obj_Error')
$iTimer = TimerInit()
$iAllTimer = $iTimer
$sSourse = FileRead($sUrl)
_ConsoleWrite('FileRead', $iTimer)
$iTimer = TimerInit()
$iTmp = StringInStr($sSourse, 'id=otable')
_ConsoleWrite('StringInStr (id=otable)', $iTimer)
If Not $iTmp Then Exit 13
$iTimer = TimerInit()
$sSourse = StringTrimLeft($sSourse, $iTmp)
_ConsoleWrite('StringTrimLeft', $iTimer)
$iTimer = TimerInit()
$iTmp = StringInStr($sSourse, 'id=oControls', 0, -1)
_ConsoleWrite('StringInStr (id=oControls)', $iTimer)
If Not $iTmp Then Exit 13
$iTimer = TimerInit()
$sSourse = StringLeft($sSourse, $iTmp)
_ConsoleWrite('StringLeft', $iTimer)
$iTmp = 0
$iTimer = TimerInit()
;~ $aTable = StringRegExp($sSourse, '(?i)<td.+?(?:align|width|onclick)=.+?>(.*?)<', 3);?
$aTable = StringRegExp($sSourse, '(?i)<td.+?(?<!-)>(.*?)<', 3);?
_ConsoleWrite('StringRegExp', $iTimer)
$sSourse = ''
$iTimer = TimerInit()
$iUb = UBound($aTable)
_ConsoleWrite('UBound', $iTimer)
If (Not $iUb) Or Mod($iUb, $iColumn) Then Exit 13
$iRow = $iUb / $iColumn
$iTimer = TimerInit()
For $i = 0 To $iUb - 1 Step $iColumn
For $j = 0 To $iColumn - 1
Switch $j
Case 14
$sSourse &= StringReplace($aTable[$i + $j], '>', '>') & @TAB
Case Else
$sSourse &= $aTable[$i + $j] & @TAB
EndSwitch
Next
$sSourse &= @CRLF
Next
_ConsoleWrite('(For...Next) * 2', $iTimer)
$iTimer = TimerInit()
$hFile = FileOpen($sTmpFile, 2)
FileWrite($hFile, $sSourse)
_ConsoleWrite('FileWrite', $iTimer)
FileClose($hFile)
ConsoleWrite('----' & @LF)
ConsoleWrite('All Time native: ' & StringFormat('%.2f sec', TimerDiff($iAllTimer) / 1000) & @LF)
ConsoleWrite('----' & @LF)
$iUb = 0
$iTimer = TimerInit()
$oExcel = _ExcelBookOpen($sTmpFile, 0)
If @error Then Exit 13
_ConsoleWrite('_ExcelBookOpen', $iTimer)
$iTimer = TimerInit()
$oExcel.Columns('D').NumberFormat = '0'
$oExcel.Columns('K').NumberFormat = '0'
With $oExcel.Range('A1:' & Chr(64 + $iColumn) & 1)
.Font.Bold = True
.HorizontalAlignment = $xlCenter
EndWith
$oExcel.Columns('A:' & Chr(64 + $iColumn)).EntireColumn.AutoFit
$oRange = $oExcel.Range('A1:' & Chr(64 + $iColumn) & $iRow)
For $i = $xlEdgeLeft To $xlInsideHorizontal
With $oRange.Borders($i)
.LineStyle = $xlContinuous
EndWith
Next
_ConsoleWrite('Formating Excel', $iTimer)
$iTimer = TimerInit()
_ExcelBookSaveAs($oExcel, $sExcelFile)
$iUb = @error
_ConsoleWrite('_ExcelBookSaveAs', $iTimer)
_ExcelBookClose($oExcel)
If Not $iUb Then FileDelete($sTmpFile)
ConsoleWrite('----' & @LF)
ConsoleWrite('All Time: ' & StringFormat('%.2f sec', TimerDiff($iAllTimer) / 1000) & @LF)
Exit $iUb
Func _ConsoleWrite($s_Text, $i_Timer)
ConsoleWrite(StringFormat($s_Text & ': %.2f msec', TimerDiff($iTimer)) & @LF)
EndFunc ;==>_ConsoleWrite
Func _Obj_Error()
$iObjEr = $oObjEr.number
ConsoleWrite('Object error: ' & $iObjEr & @LF)
ConsoleWrite('Scriptline :' & $oObjEr.scriptline & @LF)
EndFunc ;==>_Obj_Error