Thanks for the solution, Joe, Leonel, Stefaan. To continue, why should I 
create a new dictionary. My idea was to use one dictionary and populate it 
with all data. Will that not be more efficient? Thank you once again.

On Wednesday, September 3, 2014 5:15:40 PM UTC+5:30, trr wrote:
>
> In controller I create a list of dictionaries from an uploaded excel file. 
> Then I populate the list to a html table. I use xlrd lib for reading excel 
> file. The problem is the dictionary gets correctly populated from excel but 
> when I append the dictionary to the list and enumerate the list it shows 
> the last appended dictionary values for all the list items. Here is my 
> code. Pl. help. In python shell when i build a dictionary and append it to 
> list and then enumerate the list it is listed correctly.
>     d = {}
>     l = []
>     up = os.path.join(request.folder,'uploads')
>     workbook = xlrd.open_workbook(os.path.join(request.folder,'uploads',
> 'meas.xls'))
>     worksheet = workbook.sheet_by_name('Sheet1')
>     num_rows = worksheet.nrows - 1
>     num_cells = worksheet.ncols - 1
>     curr_row = -1
>     while curr_row < num_rows:
>         curr_row += 1
>         row = worksheet.row(curr_row)
>         #print 'Row:', curr_row
>         curr_cell = -1
>         while curr_cell < num_cells:
>             curr_cell += 1
>             # Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 
> 5=Error, 6=Blank
>             cell_type = worksheet.cell_type(curr_row, curr_cell)
>             cell_value = worksheet.cell_value(curr_row, curr_cell)
>             #print '    ', cell_type, ':', cell_value
>             if curr_cell == 0:
>                 d['loc_of_work'] = cell_value
>             if curr_cell == 1:
>                 d['n'] = cell_value
>             if curr_cell == 2:
>                 d['t'] = cell_value
>             if curr_cell == 3:
>                 d['l'] = cell_value
>             if curr_cell == 4:
>                 d['b'] = cell_value
>             if curr_cell == 5:
>                 d['d'] = cell_value
>         print 'dict'
>         print d.items()
>         l.append(d)
>         print 'len of list:'
>         print len(l)
>         print 'list:'
>         for i,j in enumerate(l):
>             print i,j
>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to