rpaframework icon indicating copy to clipboard operation
rpaframework copied to clipboard

Read Worksheet doesn't return last row value when I send the header flag = True

Open walaa-akram opened this issue 1 year ago • 1 comments

Hello Dears,

I have the following Excel sheet: image

and I try to read it using the header flag = true ${workSheet}= Read Worksheet ${sheetName} ${True} ${count}= Get Length ${workSheet} ${columnData}= Create List FOR ${index} IN RANGE 1 ${count}+1 ${cellValue} = Get Cell Value ${index} ${columnNo} Append To List ${columnData} ${cellValue} END When I logged the list I found it gets all column data except last row while I was expect to get all column data except first row. Why this happen? List length is 9 and it contains following items: 0: A 1: 1 2: 2 3: 3 4: 4 5: 5 6: 6 7: 7 8: 8

walaa-akram avatar Jun 23 '24 10:06 walaa-akram

Hi, It works as documented https://robocorp.com/docs-robot-framework/libraries/rpa-framework/rpa-excel-files/keywords#read-worksheet, returning list of dictionaries of the data. To get all cell values you have to consider that when looping header data becomes element, turning list length to 10 as you excel screenshot is showing.

raivolink avatar Jun 25 '24 06:06 raivolink

Yeah like @raivolink said the library works as expected. The difference with header=True to False is that header row is then excluded from the results as header row values are used as dictionary keys (thus it contains actually one row less). In False case the header row is in the results and the dictionary keys are Excel sheet column names A,B,C, etc.

The correct of looping ${worksheet} is this (works in both cases, header True/False

    FOR    ${row}    IN    @{worksheet}
        Log To Console    ${row}
    END

mikahanninen avatar Jul 25 '24 08:07 mikahanninen