2016-11-30 36 views
2

使用下面的Python測試代碼我試圖將一個Excel(*.xls)文件中的唯一工作表複製到一個帶有一個工作表的新Excel文件中。僅使用Python複製XLS的工作表以成爲新XLS中的新工作表?

輸入電子表格的樣子:

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!所有非數字單元值。

enter image description here

使用Python 2.7.10,有沒有從一個XLS閱讀工作表,然後把它寫在另一XLS文件工作表中簡單的方法?

我不想簡單地複製電子表格,然後重新命名新工作表中的工作表,因爲一旦我可以得到這個工作,我想複製每一個電子表格中的唯一工作表,成爲一個工作表用十幾張工作表在一個數據庫中輸入姓名。

+0

嘗試用'.sheet_by_index(0)'替換'.get_sheet(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。它會讓你想要做的事情變得更容易。

根據您使用一張其他工作簿中的一張工作表構建新工作簿的最終要求,以下是一些幫助代碼。

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是您希望閱讀的工作簿與其工作表的字典映射。

您可能需要安裝附加的插件,這取決於對文件類型與您合作:

pip install pyexcel pyexcel-xls 

如果不存在,你可能會看到這樣的錯誤:

IOError: No suitable library found for xls

相關問題