5

私の理解が正しければ、ワークブックのadd_sheetメソッドは新しいワークシートを作成します (そしてそれをワークブックに追加します)。xlutils を使用してコピーし、新しいシート名を使用して新しいワークブックに複数回追加したい既存の Excel テンプレート (情報を追加するためのベースとして機能する 1 つの書式設定されたシートを含む) があります。これを達成するにはどうすればよいですか?コードを調べて、既存のワークシートを既存のワークブックに追加する方法を見つけましたが、そのようなものは見つかりませんでしたか?

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

1 に答える 1

3

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
于 2013-01-14T13:01:54.293 に答える