2016-11-30 8 views
2

以下のPythonテストコードを使用して、唯一のワークシートをExcel(*.xls)ファイル内の1つのワークシートで新しいExcelファイルにコピーしようとしています。XLSのワークシートのみをコピーして、新しいXLSでPythonを使用して新しいワークシートにするには?

入力スプレッドシートは次のようになります。

enter image description here

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を使用して

enter image description here

、1つのXLSからワークシートを読んで、その後、別のXLSファイルのワークシートとしてそれを書くための簡単な方法は何ですか?

スプレッドシートをコピーして新しいワークシートに名前を変更する必要はありません。なぜなら、これを動作させることができたら、同じスプレッドシートのワークシートをコピーして、スプレッドシートの名前を12のワークシートで表示します。

+0

:それはあなたのようなエラーが表示されることがあり存在しない場合

pip install pyexcel pyexcel-xls 

あなたがで作業しているファイル形式れている追加のプラグイン依存をインストールする必要があるかもしれません'.get_sheet(0)'を '.sheet_by_index(0)'に置き換えてみてください。 – Giordano

答えて

3
from xlrd import open_workbook 
from xlutils.copy import copy 

# Read the workbook 
rb = open_workbook("input.xls", formatting_info=True) 

# Copy into a new workbook 
wb = copy(rb) 

# Rename to 'test1' as the original post asked for 
ws = wb.get_sheet(0) 
ws.name = 'test1' 

# Save the new workbook 
wb.save("output.xls") 
3

pyexcelを試してみてください。あなたがしようとしていることは、人生をはるかに簡単にします。

12の他のブックから1枚のシートを使用して新しいブックを作成するという最終要件に基づいて、ここで役立つコードがいくつかあります。

import pyexcel as pe 

outputbook = "merged.xls" 
inputbooks = { 
    "test1.xls" : "Sheet1", 
    "test2.xls" : "Sheet1", 
    "test3.xls" : "Sheet1", 
} 

merged_book = None 
for book, sheet in inputbooks.iteritems(): 
    wb = pe.get_book(file_name=book) 
    if merged_book is None: 
    merged_book = wb[sheet] 
    else: 
    merged_book = merged_book + wb[sheet] 

merged_book.save_as(outputbook) 

inputbooksあなたは自分のシートに抗して読みたいワークブックの辞書マッピングです。

IOError: No suitable library found for xls

関連する問題