python xlrd / xlwt使用来自2个不同工作簿的工作表创建新工作簿,保留格式

时间:2014-12-24 14:44:03

标签: python excel xlrd xlwt xlutils

首先让我解释一下我的术语。 Excel工作簿具有工作表。例如。默认情况下,新的Excel工作簿包含3张。

现在,使用xlrd,xlwt和xlutils,我的目的是输出一个新工作簿(例如:file3),输入来自file1的3张和来自file2的1张。这尽可能保留格式。我使用以下代码(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给出的错误:'文件错误:数据可能已丢失。'单击“确定”并检查文件,我看到了很多#VALUE!错误,列宽等已保留,但字体和颜色没有。值得注意的是,数字已被完美复制,但文本却没有。有没有人知道出了什么问题?

0 个答案:

没有答案