2015-07-13 15 views
6

Ho scritto codice che apre un file excel e scorre su ogni riga e passa il valore a un'altra funzione.come scrivere in una nuova cella in python usando 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 

Ho ricevuto il seguente errore quando ho provato a eseguire il file.

TypeError: IndexError: tuple index out of range 

Posso scrivere il valore restituito x1 alla colonna row[1]. È possibile scrivere a Excel (ad esempio con row[1]) invece di accedere singole cellule come ws.['c1']=x1

+0

Il codice non rispecchia quello che dici vuole fare. –

risposta

17

Prova questo:

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 

Questo imposterà celle A1, B2 e C3 a 1, 2 e 3, rispettivamente (tre diversi modi di impostare valori di cella in un foglio di lavoro).

Il secondo metodo (specificando riga e colonna) è più utile per la vostra situazione:

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

ci sono 150 righe, sarà difficile accedere a ciascuna cella e scrivere i dati. like ws ['a1'] = x1, ws ['a2'] = ''. Desidero avere una soluzione generale. Grazie per l'aiuto – Priyaranjan

+0

Quindi usa il secondo modulo che ho dato: ws.cell (riga = X, colonna = Y) .valore = V –

+0

Ho aggiornato la mia risposta per includere come potresti usare quel metodo nella tua situazione particolare. –