2015-07-13 18 views
6

Napisałem kod, który otwiera plik Excela i iteruje w każdym wierszu i przekazuje wartość do innej funkcji.jak napisać do nowej komórki w Pythonie za pomocą openpyxl

import openpyxl 
wb = load_workbook(filename='C:\Users\xxxxx') 
for ws in wb.worksheets: 
    for row in ws.rows: 
     print row 
     x1=ucr(row[0].value) 
     row[1].value=x1 # i am having error at this point 

Otrzymuję następujący błąd podczas próby uruchomienia pliku.

TypeError: IndexError: tuple index out of range 

mogę napisać zwracanej wartości x1 do kolumny row[1]. Czy jest możliwe aby napisać do programu Excel (czyli używając row[1]) zamiast dostępu do pojedynczych komórek jak ws.['c1']=x1

+0

Twój kod nie odzwierciedla tego, co mówisz, chcesz zrobić. –

Odpowiedz

17

Spróbuj tego:

import openpyxl 
wb = load_workbook(filename='xxxx.xlsx') 
ws = wb.worksheets[0] 
ws['A1'] = 1 
ws.cell(row=2, column=2).value = 2 
ws.cell(coordinate="C3").value = 3 # 'coordinate=' is optional here 

Spowoduje to ustawienie Komórki A1, B2 i C3 1, 2 i 3 odpowiednio (trzy różne sposoby ustawiania wartości komórek w arkuszu).

Druga metoda (określając wiersz i kolumna) jest najbardziej przydatny dla danej sytuacji:

import openpyxl 
wb = load_workbook(filename='xxxxx.xlsx') 
for ws in wb.worksheets: 
    for index, row in enumerate(ws.rows, start=1): 
     print row 
     x1 = ucr(row[0].value) 
     ws.cell(row=index, column=2).value = x1 
+0

jest 150 wierszy, będzie trudno uzyskać dostęp do każdej komórki i zapisać dane. jak ws ['a1'] = x1, ws ['a2'] = ''. Chciałbym mieć ogólne rozwiązanie. Dzięki za pomoc – Priyaranjan

+0

Więc użyj drugiej formy, którą dałem: ws.cell (wiersz = X, kolumna = Y) .value = V –

+0

Zaktualizowałem moją odpowiedź, aby objąć sposób, w jaki możesz użyć tej metody w twojej konkretnej sytuacji. –

Powiązane problemy