Search code examples
pythonexcelxlrdxlwt

python: Store all cell values with xlrd and write to new workbook using xlwt


im trying to copy all cells on a sheet to a new workbook. i can store cell values manually like in the example code below and paste variable in respective cells but i want to automate the collection of cell data. I am very new to python but i can conceptually see something along the line of this but i could use some help to finish it, thanks!

attempt to automate cell collection

 def cell(r,c): 
   set r+=1 
    cellname = c.isalpha() + r
      if r <= sheet.nrow:  
           cellname = (r,c,sheet.cell_value) 

...... i get lost around here but i assume there should be a sheet.ncols and nrows

current manual cell copying

 cellA1 = sheet.cell_value(0,0)
 cellA2 = sheet.cell_value(1,0)
 cellA3 = sheet.cell_value(2,0)
 cellA4 = sheet.cell_value(3,0)
 cellA5 = sheet.cell_value(4,0)
 cellB1 = sheet.cell_value(0,1)
 cellB2 = sheet.cell_value(1,1)

workbook = xlwt.Workbook()
 sheet = workbook.add_sheet('ITEM DETAILS')

manual cell pasting

sheet.write(0, 0, cellA1)
sheet.write(1, 0, cellA2)

Solution

  • You can just simply loop through the cells in the sheet, by using sheet.nrows and sheet.ncols as the limit to loop up to. Also, make sure you do not define the new worksheet you are creating as sheet itself, use a new name. Example:

    newworkbook = xlwt.Workbook()
    newsheet = newworkbook.add_sheet('ITEM DETAILS')
    for r in range(sheet.nrows):
        for c in range(sheet.ncols):
            newsheet.write(r, c, sheet.cell_value(r, c))
    

    Then use newsheet instead of sheet wherever you want to use the new sheet.