2015-07-13 76 views
6

Tôi đã viết mã mở tệp excel và lặp qua mỗi hàng và chuyển giá trị cho hàm khác.cách viết vào ô mới bằng python sử dụng 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 

Tôi gặp phải lỗi sau khi tôi cố chạy tệp.

TypeError: IndexError: tuple index out of range 

Tôi có thể viết giá trị trả về x1 đến cột row[1]. Là nó có thể viết thư cho excel (tức là sử dụng row[1]) thay vì truy cập các tế bào đơn lẻ như ws.['c1']=x1

+0

Mã của bạn không phản ánh những gì bạn nói muốn làm. –

Trả lời

17

Hãy thử điều này:

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 

này sẽ thiết lập tế bào A1, B2 và C3 đến 1, 2 và 3 lần lượt là (ba cách khác nhau để đặt giá trị ô trong một trang tính).

Phương pháp thứ hai (xác định hàng và cột) là hữu ích nhất đối với tình hình của bạn:

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

có 150 hàng, sẽ khó truy cập mỗi ô và ghi dữ liệu. như ws ['a1'] = x1, ws ['a2'] = ''. Tôi muốn có solution.Thanks chung cho sự giúp đỡ – Priyaranjan

+0

Vì vậy, sử dụng các hình thức thứ hai tôi đã cho: ws.cell (hàng = X, cột = Y) .value = V –

+0

Tôi đã cập nhật câu trả lời của tôi để bao gồm cách bạn có thể sử dụng phương pháp đó trong tình huống cụ thể của bạn. –

Các vấn đề liên quan