2013-05-21 15 views
5

Bir hücre dizisini güncellemek için aşağıdaki komutu kullanırsınız. Benim uygulama içinPython/gspread - Birden fazla hücreyi aynı anda FARKLI DEĞERLER ile nasıl güncelleyebilirim?

## Select a range 
cell_list = worksheet.range('A1:A7') 

for cell in cell_list: 
    cell.value = 'O_o' 

## Update in batch 
worksheet.update_cells(cell_list) 

, bütün bir dizi güncellemek için istiyorum ama tek tek her hücre için farklı bir değer ayarlamak çalışıyorum. Bu örnekle ilgili problem, her hücrenin aynı değerle sonuçlanmasıdır. Her bir hücreyi tek tek güncellemek verimsiz ve çok uzun sürüyor. Bunu nasıl verimli bir şekilde yapabilirim?

cevap

9

Numaraları hücre içinde istediğiniz farklı değerleri içeren ayrı bir listede kullanabilir ve hücre listesindeki uygun hücrelere uyacak şekilde dizinin dizin bölümünü kullanabilirsiniz. aşağıdaki gibi

cell_list = worksheet.range('A1:A7') 
cell_values = [1,2,3,4,5,6,7] 

for i, val in enumerate(cell_values): #gives us a tuple of an index and value 
    cell_list[i].value = val #use the index on cell_list and the val from cell_values 

worksheet.update_cells(cell_list) 
+0

Bu döner '1', ilk sütun için, ve Kalan – ecollis6

+1

için 'none' Örneğiniz bir dizi A1: A7 verir. Sadece ilk sütundaki hücreler değiştirilecekti. Test ettim ve makinemde çalışıyor. A1 = 1, A2 = 2, A3 = 3, vb. Yapmalıdır. Eğer sütunlar istiyorsanız, aralığa ihtiyacınız var demektir ('A1: G1') – ecline6

+0

Hatam, verilerin sütunlar yerine girilmesi için değiştirdim. satırlar. Başka düzenlemeler yapmam gerekiyor mu? – ecollis6

2

, bir başlık satırı olan bir tablo varsayarak:

Name | Weight 
------+------- 
Apple | 56 
Pear | 23 
Leaf | 88 

Daha sonra, aşağıdaki gerekir olabilir kendini açıklayıcı

cell_list = [] 

# get the headers from row #1 
headers = worksheet.row_values(1) 
# find the column "Weight", we will remember this column # 
colToUpdate = headers.index('Weight') 

# task 1 of 2 
cellLookup = worksheet.find('Leaf') 
# get the cell to be updated 
cellToUpdate = worksheet.cell(cellLookup.row, colToUpdate) 
# update the cell's value 
cellToUpdate.value = 77 
# put it in the queue 
cell_list.append(cellToUpdate) 

# task 2 of 2 
cellLookup = worksheet.find('Pear') 
# get the cell to be updated 
cellToUpdate = worksheet.cell(cellLookup.row, colToUpdate) 
# update the cell's value 
cellToUpdate.value = 28 
# put it in the queue 
cell_list.append(cellToUpdate) 

# now, do it 
worksheet.update_cells(cell_list) 
İlgili konular