2015-08-04 4 views
0

У меня есть, возможно, тысяча фактур в Excel, все из которых имеют клиент/имя в B2 с адресом, разделенным на B3 и B4, с B3, имеющим номер и название улицы, и город, штат и почтовый индекс в B4. То, что я пытаюсь сделать, - открыть каждый из этих файлов excel (все находятся в одном каталоге) и извлечь имя и адрес для создания новой электронной таблицы с информацией в ней.Информация о конденсировании из нескольких электронных таблиц в один с помощью python

Вот то, что я до сих пор:

import glob 
from xlrd import open_workbook, XL_CELL_TEXT 
from xlwt import Workbook 
from tempfile import TemporaryFile 

invoices = glob.glob("C:\emma\*.xls") 
wbook = Workbook() 
wsheet = wbook.add_sheet('Sheet 1') 
R = 0 

for x in invoices: 
    rbook = open_workbook(x) 
    rsheet = rbook.sheet_by_index(1) 
    ncell = rsheet.cell(1,1) 
    acell1 = rsheet.cell(1,2) 
    acall2 = rsheet.cell(1,3) 
    name = ncell.value 
    address = acell1.value + " " + acell2.value 

    wsheet.write(R,0,name) 
    wsheet.write(R,1,address) 

    R = R + 1 

wbook.save('addresses.xls') 
wbook.save(TemporaryFile()) 

На данный момент он не работает. Вот ошибка, которую я получаю:

Traceback (most recent call last): 
    File "C:\emma\emma.py", line 14, in <module> 
    ncell = rsheet.cell(1,1) 
    File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 399, in cell 
    self._cell_types[rowx][colx], 
IndexError: list index out of range 

Я не совсем уверен, что вызывает эту ошибку.

+0

'rbook.sheet_by_index (1)' - листы основаны на нулевом значении: вы имеете в виду второй лист здесь? –

ответ

0

Тим Уильямс был прав, установив rbook.sheet_by_index(1) на rbook.sheet_by_index(0), что сделало его работу, а также зафиксировало опечатку на acall2 = rseet.cell(1,3).