python xlrd/xlwt создает новую книгу, используя листы из двух разных книг, сохраняя форматирование

Сначала позвольте мне объяснить мою терминологию. В книге Excel есть листы. Например. новая рабочая книга Excel по умолчанию содержит 3 листа.

Теперь, используя xlrd, xlwt и xlutils, моя цель состоит в том, чтобы вывести новую книгу (скажем, файл3) с входными данными: 3 листа из файла1 и 1 лист из файла2. Все это максимально сохраняет форматирование. Я использую следующий код (file1, file2 вы должны создать вручную самостоятельно, просто заполните их цифрами и текстом):

import os
import xlrd
import xlwt
from xlutils.copy import copy as xlutils_copy
from copy import deepcopy as deep_copy

new_workbook = xlwt.Workbook()

with xlrd.open_workbook("file1.xls", formatting_info=True) as rb1:
    wb1 = xlutils_copy(rb1)

    allSheets = []
    allSheets.append(wb1.get_sheet(0))
    allSheets.append(wb1.get_sheet(1))
    allSheets.append(wb1.get_sheet(2))
    extra = deep_copy(wb1.get_sheet(1))
    allSheets.append(extra)
    allSheets[-1].name = 'extra sheet file1'

    with xlrd.open_workbook("file2.xls", formatting_info=True) as rb2:
        wb2 = xlutils_copy(rb2)
        extra2 = deep_copy(wb2.get_sheet(0))
        allSheets.append(extra2)
        allSheets[-1].name = 'extra sheet file2'

    new_workbook._Workbook__worksheets = allSheets

    outputFile = "file3.xls"
    new_workbook.save(outputFile)
    os.startfile(outputFile)

Проблема в том, что когда я открываю файл «file3.xls», я получаю сообщение об ошибке, выдаваемое Excel: «Ошибка файла: данные могли быть потеряны». Нажав «ОК» и проверив файл, я вижу много #ЗНАЧ! ошибки, ширина столбца и т. д. сохранены, а шрифт и цвета — нет. Примечательно то, что числа были скопированы идеально, а текст — нет. Кто-нибудь знает, что происходит не так?


person Jellema    schedule 24.12.2014    source источник