Добавление листа к существующему листу Excel без удаления другого листа

Я пытаюсь добавить лист в файл excel: ex.xls, и всякий раз, когда я это делаю, удаляются все ранее сделанные листы.

Как добавить лист в этот файл Excel, не удаляя другие листы?

Вот мой код для создания листа:

import xlwt
import xlrd

wb = Workbook()
Sheet1 = wb.add_sheet('Sheet1')
wb.save('ex.xls')

person Nick M.    schedule 28.06.2016    source источник
comment
Я полагаю, вы не можете сделать Sheet2 = wb.add_sheet('Sheet2')?   -  person BruceWayne    schedule 28.06.2016
comment
Я могу, но это просто создает два новых листа, удаляя все остальные листы.   -  person Nick M.    schedule 28.06.2016
comment
Это связано с тем, что вы создаете новую книгу (новый файл Excel), добавляете рабочий лист, а затем перезаписываете существующий файл Excel. Я знаю, что это не решает ваш вопрос, Берни сделал это, но подумал, что вы могли бы оценить объяснение, почему это не удалось.   -  person Bill Kidd    schedule 16.11.2017


Ответы (2)


Я считаю, что это единственный способ делать то, что вы хотите:

import xlrd, xlwt
from xlutils.copy import copy as xl_copy

# open existing workbook
rb = xlrd.open_workbook('ex.xls', formatting_info=True)
# make a copy of it
wb = xl_copy(rb)
# add sheet to workbook with existing sheets
Sheet1 = wb.add_sheet('Sheet1')
wb.save('ex.xls')
person mechanical_meat    schedule 28.06.2016
comment
Ура, приятель. Рад, что могу вам помочь. - person mechanical_meat; 29.06.2016
comment
Если вы не против видеть себя единственным, кто действительно знает эти вещи: stackoverflow.com/questions/38063661/ - person Nick M.; 29.06.2016
comment
Как скопировать каждую вещь с первого листа листа Excel на пятый лист, ссылаясь на них по имени - person Nick M.; 29.06.2016
comment
Может быть, создадим для этого новый вопрос. - person mechanical_meat; 29.06.2016
comment
Следует иметь в виду, что xlrd предназначен только для чтения существующих файлов Excel, а xlwt - только для записи. Вот почему, как показывает Берни, вам понадобятся утилиты для связи между ними. Здесь вы можете видеть, что существующий файл открывается, данные копируются в новую книгу, затем добавляется новый лист и, наконец, выполняется запись поверх существующего файла Excel. - person Bill Kidd; 16.11.2017

Ниже показано использование openpyxl для создания нового листа в книге Excel.

import openpyxl

wb=openpyxl.load_workbook("Example_Excel.xlsx")
wb.create_sheet("Sheet1")  

Если листы или книга еще не существуют, вы получите сообщение об ошибке, чтобы избежать этого.

import openpyxl

wb=openpyxl.load_workbook("Example_Excel.xlsx")
try:
    wb["Sheet1"]
except:
    wb.create_sheet("Sheet1") 

В зависимости от того, как вы хотите его использовать, ниже приведен пример записи информации на несколько страниц.

import openpyxl

work_book = 'Example_Excel.xlsx'
sheets = "Sheet1","Sheet2","Sheet3","Sheet4","Sheet5"

for current_sheet in sheets:
    wb=openpyxl.load_workbook(work_book)

    #if the sheet doesn't exist, create a new sheet
    try:
      wb[current_sheet]
    except:
      wb.create_sheet(current_sheet) 

    #wait for user to press "Enter" before starting on next sheet
    raw_input("Press Enter to continue...")

#The code for you wish repeated for each page
    #This example will print the sheet name to "B2" cell on that sheet
    cell ="B"+str(2)
    sheet=wb[current_sheet]
    sheet[cell].value= current_sheet
person Travis Boop    schedule 14.05.2018