2016-01-12 3 views
-1

У меня есть два списка, которые я хочу написать новый xlsx файл:Python: ошибка индекса столбца с openpyxl

list1=[1,2,3,4] 
list2=[A,B,C,D] 

Я хочу list1 разгрузиться в колонке А и list2 колонке B:

COLUMN A  COLUMN B 
1   A 
2   B 
3   C 
4   D 

Это мое взятие на себя, но оно вызывает ошибку: ValueError: Invalid column index 0.

from openpyxl import load_workbook 
from openpyxl import Workbook 
from openpyxl.compat import range 
from openpyxl.cell import get_column_letter 
import os 

wb = Workbook() 
newdir=r'C:\Users\MyName\Desktop' 
os.chdir(newdir) 
dest_filename = 'Trial.xlsx' 
ws=wb.active 
for r in range(1,5): 
    for c in 'A': 
     ws.cell(row=r,column=0).value=list1[r] 
    for c in 'B': 
     ws.cell(row=r,column=1).value=list2[r] 
wb.save(filename = dest_filename) 

Ошибка на последней строке. Что с этим не так?

+2

1-индексация приведена в документации. –

+0

Почему я получил голос? Хотелось бы, чтобы мы были вынуждены давать объяснения без произвольного голосования никому – FaCoffee

+1

Я добавил комментарий после downvoting. Очевидно, вы не потратили много времени на чтение документов. Но, серьезно, кто так заботится о том, чтобы быть опущенным? –

ответ

4

Никогда не openpyxl, но, глядя на the source, кажется, что номера столбцов должны быть между 1 и 18278:

if not 1 <= col_idx <= 18278: 
    raise ValueError("Invalid column index {0}".format(col_idx)) 

Таким образом, вместо того, чтобы использовать column=0 и column=1, использование:

for r in range(1,5): 
    for c in 'A': 
     ws.cell(row=r, column=1).value = list1[r] 
    for c in 'B': 
     ws.cell(row=r, column=2).value = list2[r] 

PS:for c in 'A' и for c in 'B'? Возможно, вы имели в виду:

for r in range(1,5): 
    ws.cell(row=r, column=1).value = list1[r] 
    ws.cell(row=r, column=2).value = list2[r] 
+1

Да, строки и столбцы 1-индексируются так, что '' A1 "' соответствует '(1, 1)' –

+0

Я получаю эту ошибку при изменении моего кода в соответствии с вашими тремя последними строками: 'ValueError: Invalid column index A' , – FaCoffee

+1

@ FC84: затем используйте 1 и 2 вместо A и B –

Смежные вопросы