Mit dem folgenden Python-Testcode versuche ich das einzige Arbeitsblatt in einer Excel-Datei (*.xls
) in eine neue Excel-Datei mit einem Arbeitsblatt zu kopieren.Kopieren nur Arbeitsblatt von XLS, um neues Arbeitsblatt in neuen XLS mit Python zu werden?
Die Eingabe-Tabelle wie folgt aussieht:
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")
Wenn ich den Code ausführen es die Ausgabe unten zeigt und erstellt das neue Excel mit dem Arbeitsblatt mit dem Namen Test1-Datei.
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
>>>
Leider ist die Ausgabe, die die richtige Anzahl von Zellen geschrieben zu haben scheint hat alle nicht-numerischen Werte Zelle als #VALUE!
geschrieben.
Mit Python 2.7.10 gibt es eine einfache Möglichkeit, das Arbeitsblatt von einem XLS lesen und schreiben sie dann als ein Arbeitsblatt in einer anderen XLS-Datei?
Ich möchte nicht einfach die Tabelle kopieren und dann das Arbeitsblatt in das neue umbenennen, denn sobald ich dies zum Laufen bringen kann, möchte ich das einzige Arbeitsblatt in jedem Dutzend Tabellenkalkulationen kopieren, um ein Arbeitsblatt zu werden Name in einem Spreadsheer mit einem Dutzend Arbeitsblättern.
Versuchen Sie, '.get_sheet (0)' durch '.sheet_by_index (0)' zu ersetzen. – Giordano