まず、用語について説明します。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! が表示されます。エラー、列幅などは保持されていますが、フォントと色は保持されていません。驚くべきことに、数字は完全にコピーされていますが、テキストは完全にコピーされていません。誰が何がうまくいかないのか手がかりを持っていますか?