Search code examples
pythonexcelpandasxlrd

How to create a new list per Excel row in python3


I have an Excel sheet with the data as pictured: Cisco Call Handlers

I'm working with Python 3 and reading data from this sheet to try and build a list for each row. I've tried using pandas and dictionaries and now I'm currently trying xlrd because I cant figure this out! I currently have the following code:

idx=1
i2 = 1 #skipping header row as that is where the keys are
list_of_values = []
for idx in range(sheet.nrows):
    row = sheet.row_values(idx)
    print(idx, row)
    idx += 1
    if idx == idx:
        for cell in row:
            list_of_values.append(sheet.row_values(i2))
print(list_of_values)#prints[['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'], ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3']]

The code prints as follows:

0 ['DisplayName', 'Extension', 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
1 ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3']
2 ['TestDisplayName3', 6230.0, '', 3030.0, '', 4578.0, '', '', '', '', '', '']

but when printing list_of_values, it only repeatedly prints row with idx 1. I hope that makes sense. Please help as I am clearly a beginner in Python. I know my "list_of_variables" variable is wrong because I would need multiple variables to store each one of my rows, right? Is there a way to create a new variable per list/per row of the excel sheet to house the appropriate cells? such as: list_of_values1 = ['DisplayName', 'Extension', 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]. list_of_values2 = ['TestDisplayName2', 3091.0, '', 8645.0, '', '', '', '', '', 'Agent007', '', 'TestDisplayName3'] list_of_values3 = ['TestDisplayName3', 6230.0, '', 3030.0, '', 4578.0, '', '', '', '', '', '']


Solution

  • Is this what you are trying to achieve?

    values = dict()
    for idx in range(1, sheet.nrows):
        values[idx] = sheet.row_values(idx)
    
    for key, value in values.items():
        print(key, value)
    

    Here every value corresponds to every row in the spreadsheet.


    Original response

    Perhaps you intended to write

            list_of_values.append(sheet.row_values(idx))
    

    instead of

            list_of_values.append(sheet.row_values(i2))