以下のPythonテストコードを使用して、唯一のワークシートをExcel(*.xls
)ファイル内の1つのワークシートで新しいExcelファイルにコピーしようとしています。XLSのワークシートのみをコピーして、新しいXLSでPythonを使用して新しいワークシートにするには?
入力スプレッドシートは次のようになります。
from copy import deepcopy
from xlrd import open_workbook
from xlutils.copy import copy as copy
from xlwt import Workbook
rb = open_workbook(r"C:\Temp\test1.xls",formatting_info=True)
wb = copy(rb)
new_book = Workbook()
r_sheet = rb.sheet_by_index(0)
sheets = []
w_sheet = deepcopy(wb.get_sheet(0))
w_sheet.set_name("test1")
for row_index in range(0, r_sheet.nrows):
for col_index in range(0, r_sheet.ncols):
cell_value = r_sheet.cell(row_index, col_index).value
print cell_value
w_sheet.write(row_index, col_index, cell_value)
sheets.append(w_sheet)
new_book._Workbook__worksheets = sheets
new_book.save(r"C:\Temp\test2.xls")
私は、コードを実行する場合は、以下の出力を示していて、新しいExcelはtest1という名前のワークシートにファイルを作成します。
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
Col1
Col2
Col3
a
1.0
X
b
2.0
Y
c
3.0
Z
>>>
残念ながら、そこに書かれた細胞の正確な数を持っているように見えます出力は、#VALUE!
として書かれたすべての非数値セルの値を持っています。 Pythonの2.7.10を使用して
、1つのXLSからワークシートを読んで、その後、別のXLSファイルのワークシートとしてそれを書くための簡単な方法は何ですか?
スプレッドシートをコピーして新しいワークシートに名前を変更する必要はありません。なぜなら、これを動作させることができたら、同じスプレッドシートのワークシートをコピーして、スプレッドシートの名前を12のワークシートで表示します。
:それはあなたのようなエラーが表示されることがあり存在しない場合
:
あなたがで作業しているファイル形式れている追加のプラグイン依存をインストールする必要があるかもしれません'.get_sheet(0)'を '.sheet_by_index(0)'に置き換えてみてください。 – Giordano