3

まず、用語について説明します。Excel ワークブックにはシートがあります。たとえば、新しい Excel ワークブックにはデフォルトで 3 つのシートが含まれています。

さて、xlrd、xlwt、および xlutils を使用して、私の目的は、file1 から 3 枚のシートと file2 から 1 枚のシートを入力として、新しいワークブック (たとえば、file3) を出力することです。これにより、フォーマットが可能な限り維持されます。私は次のコードを使用しています(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 から「ファイル エラー: データが失われた可能性があります」というエラーが表示されることです。[OK] をクリックしてファイルを調べると、多くの #VALUE! が表示されます。エラー、列幅などは保持されていますが、フォントと色は保持されていません。驚くべきことに、数字は完全にコピーされていますが、テキストは完全にコピーされていません。誰が何がうまくいかないのか手がかりを持っていますか?

4

0 に答える 0