python: сохранить все значения ячеек с помощью xlrd и записать в новую книгу с помощью xlwt

я пытаюсь скопировать все ячейки на листе в новую книгу. я могу хранить значения ячеек вручную, как в приведенном ниже примере кода, и вставлять переменные в соответствующие ячейки, но я хочу автоматизировать сбор данных ячеек. Я очень новичок в python, но я могу концептуально увидеть что-то в этом роде, но мне не помешала бы помощь, чтобы закончить это, спасибо!

попытка автоматизировать сбор клеток

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

...... я заблудился здесь, но я предполагаю, что должны быть листы.ncols и nrows

текущее ручное копирование ячеек

 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')

вставка ячеек вручную

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

person Ray Mercedes    schedule 18.08.2015    source источник


Ответы (2)


Вы можете просто перебирать ячейки на листе, используя sheet.nrows и sheet.ncols в качестве предела для цикла. Кроме того, убедитесь, что вы не определяете новый рабочий лист, который вы создаете, как сам sheet, используйте новое имя. Пример:

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))

Затем используйте newsheet вместо sheet везде, где вы хотите использовать новый лист.

person Anand S Kumar    schedule 20.08.2015
comment
ты лучший, это определенно ответил на этот вопрос - person Ray Mercedes; 20.08.2015

Ответ Ананда С. Кумара правильный, но вам нужно изменить i на r и j на c. Для дополнительной пользы я добавил еще немного кода для полного примера кода. Этот код открывает существующий файл Excel, считывает все данные с первого листа и записывает те же данные в новый файл Excel.

    import os,xlrd,xlwt

    if os.path.isfile(outExcel):os.remove(outExcel)#delete file if it exists

    inExcel= (r'C:\yourpath\inFile.xls')
    outExcel= (r'C:\yourpath\outFile.xls')

    workbook = xlrd.open_workbook(inExcel)
    sheetIn = workbook.sheet_by_index(0)

    workbook = xlwt.Workbook()
    sheetOut = workbook.add_sheet('DATA')

    for r in range(sheetIn.nrows):
        for c in range(sheetIn.ncols):
            sheetOut.write(r, c, sheetIn.cell_value(r, c))

    workbook.save(outExcel)#save the result
person VeeGee    schedule 26.01.2017