Reading an Excel Spreadsheet with OLE

Description

The following script shows how to read data from an Excel spreadsheet into a character array.

Create an array to receive the data. The array is 4 columns by 10 rows.

dim ptr2[4,10] as C
get_excel_data("c:\spread\books.xls", ptr2)

Open the spreadsheet and step through the cells.

' Reads spreadsheet data into Data_Array
function get_excel_data as V (Filename as C, First_Row as N, First_Col as N, Data_Array as P)
    dim MyObject as P
    dim row as N
    dim col as N
    dim rows as N
    dim cols as N
    dim cell as C
    dim temp as C
    cols = Data_Array.size(1)
    rows = Data_Array.size(2)
    on error goto quitting
    MyObject = ole.getobject(Filename)
    for row = First_Row to First_Row + rows
        for col = First_Col to First_Col + cols
            cell = get_col(col) + row
            Data_Array[row,col] = MyObject.activesheet.Cells.Range(cell)
        next col
    next row
quitting:
    MyObject.close()
    delete MyObject
end function
' Computes the column letter
function get_col as C (num as N)
    dim k as N
    dim c1 as C
    dim c2 as C
    k = int( mod(num/26,26) )
    c1 = if(k > 0, chr(k + 64), "")
    c2 = chr(num - (k * 26) + 64)
    get_col = ltrim(c1+c2)
end function

If you do not know the data types of a returned value, you can check it with this statement.

typeof(Data_Array[row,col].value)

The value returned will be "C" (character), "N" (numeric), or "T" (date/time). If you want to preserve the format of a date/time value, examine the value of :

Data_Array[row,col].NumberFormat.

See Also