ADO Example Excel

From AutoIt Wiki
Revision as of 12:40, 15 August 2015 by Rt01 (talk | contribs) (Example didn't work with $iOptions = 2 (adCmdTable))
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Read XLS file and display the cells of a range

The following example

  • Reads the cells of a range of an XLS file and displays two columns of each row
  • The Excel worksheet has no header row

Example AutoIt script:

Global Const $iCursorType = 0 ; adOpenForwardOnly
Global Const $iLockType = 1 ; adLockReadOnly
Global Const $iOptions = 512 ; adCmdTableDirect - Return all rows from the specified table
Global $oADOConnection = ObjCreate("ADODB.Connection") ; Create a connection object
Global $oADORecordset = ObjCreate("ADODB.Recordset") ; Create a recordset object
Global $sFilename = @ScriptDir & "\ADO_Example_Excel.xls"
Global $sADOConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' & $sFilename & ';Extended Properties="Excel 8.0;HDR=No"'
$oADOConnection.Open($sADOConnectionString) ; Open the connection
Global $sADOSQL = "Select F1,F2 FROM [Sheet1$A1:B2]" ; Select all records and all fields
$oADORecordset.Open($sADOSQL, $oADOConnection, $iCursorType, $iLockType, $iOptions) ; Issue the SQL query
With $oADORecordset
    While Not .EOF ; repeat until End-Of-File (EOF) is reached
        ; Write the content of all fields to the console separated by | by processing the fields collection
        ConsoleWrite("Process the fields collection:          ")
        For $oField In .Fields
            ConsoleWrite($oField.Value & "|")
        Next
        ConsoleWrite(@CR)
        ; Write a second line by accessing all fields of the collection by name or item number
        ConsoleWrite("Process the fields by name/item number: " & .Fields("F1").Value & "|" & .Fields(1).Value & "|" & @CR)
        .MoveNext ; Move To the Next record
    WEnd
EndWith
$oADORecordset.Close ; Close the recordset
$oADORecordset = 0 ; Release the recordset object
$oADOConnection.Close ; Close the connection
$oADOConnection = 0 ; Release the connection object

Input file: ADO_Example_Excel.xls

Result:

Process the fields collection:          F1|F2|
Process the fields by name/item number: F1|F2|
Process the fields collection:          F1.1|F2.1|
Process the fields by name/item number: F1.1|F2.1|