2011-03-15 42 views
3
import glob 
import xlrd 

from xlwt import Workbook 

wb = Workbook() 

for file_name in glob.glob("foo*.xls"): 
    wb_orig = xlrd.open_workbook(file_name) 
    for ws_orig in wb_orig.sheets(): 
     ws = wb.add_sheet('{0} {1}'.format(file_name, ws_orig.name)) 
     for rx in range(ws_orig.nrows): 
      for cx in range(ws_orig.ncols): 
       ws.write(rx, cx, ws_orig.cell_value(rx,cx)) 

wb.save("mefoo.xls") 

我試圖以多種方式上面的代碼合併多個Excel表爲一個工作簿........ 此代碼給誤差作爲列表索引超出範圍

Traceback (most recent call last): 
    File "E:\my python\Internship\mergestackoverflow.py", line 16, in <module> 
    wb.save("mefoo.xls") 
    File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 634, in save 
    doc.save(filename, self.get_biff_data()) 
    File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 615, in get_biff_data 
    self.__worksheets[self.__active_sheet].selected = True 
IndexError: list index out of range 

請幫我解決錯誤..

回答

6

您可以得到該IndexError的唯一方法是如果輸出工作簿中沒有工作表。

您需要檢查您的glob.glob("foo*.xls");它看起來像沒有返回文件。

+0

感謝您的幫助...... – 2011-03-16 10:36:52

+0

@冷血:請考慮「接受」答案(左邊的大勾) – 2011-03-16 10:59:47

1

我發現的解決方案是不使用glob中的絕對路徑。

for file_name in glob.glob("C://your//full//path//here//foo*.xls"): 
    #population/merging code here 

wb.save("mefoo.xls") 

至於爲什麼這解決了這個問題,我不知道。但我希望這有助於某人。