Как добавить «существующий» лист в книгу, используя xlrd, xlwt и xlutils - PullRequest
5 голосов
/ 30 марта 2011

Если я правильно понимаю, метод add_sheet рабочей книги создает новую рабочую таблицу (и добавляет ее в рабочую книгу).У меня есть существующий шаблон Excel (с одним отформатированным листом, который служит основой для добавления информации), который я хотел бы скопировать с помощью xlutils и добавить его в новую книгу несколько раз, используя новые имена листов.Как мне добиться этого?Я просмотрел код, чтобы узнать, как добавить существующую рабочую таблицу в существующую рабочую книгу, но не смог найти ничего подобного?

from xlrd import open_workbook
from xlutils.copy import copy
from xlwt import Workbook
rb = open_workbook('report3.xlt',formatting_info=True)
wb = copy(rb)
new_book = Workbook()
for distinct_employee in distinct_employees:
    w_sheet = wb.get_sheet(0)
    w_sheet.write(6,6,distinct_employee.name)
    # give the sheet a new name (distinct_employee.id_number)
    # add this sheet to new_book
book.save('all_employees.xls')

1 Ответ

3 голосов
/ 14 января 2013

Я обнаружил, что с помощью copy.deepcopy вы можете создать копию своих рабочих листов.Также с помощью атрибута _Workbook__worksheets вы можете установить список листов вашей рабочей книги

Используя ваш пример, у меня будет следующий код:

from copy import deepcopy
from xlrd import open_workbook
from xlutils.copy import copy as copy
from xlwt import Workbook
rb = open_workbook('report3.xlt',formatting_info=True)
wb = copy(rb)
new_book = Workbook()

sheets = []
for distinct_employee in distinct_employees:
    w_sheet = deepcopy(wb.get_sheet(0))
    w_sheet.write(6,6,distinct_employee.name)

    # give the sheet a new name (distinct_employee.id_number)
    w_sheet.set_name(distinct_employee.name)

    # add w_sheet  to the sheet list
    sheets.append(w_sheet)

 # set the sheets of the workbook
 new_book._Workbook__worksheets = sheets
...