簡體   English   中英

python / gspread-如何使用數據列表更新單元格范圍?

[英]python / gspread - How to update a range of cells with a data list?

我有一個數據列表(從CSV中提取),並且正在嘗試使用Python / GSpread更新Google文檔上的一系列單元格。 這是我的代碼示例:

import gspread
def write_spreadsheet(spreadsheet_name, sheet_id, data, start_row):
    gc = gspread.login('yourmail@gmail.com', 'password')
    wks = gc.open(spreadsheet_name).get_worksheet(sheet_index)
    start_letter = 'A'
    end_letter = string.uppercase[len(data[0]) - 1]
    end_row = start_row + len(data) - 1
    range = "%s%d:%s%d" % (start_letter, start_row, end_letter, end_row)

    print "Range is: " + range
    cell_list = wks.range(range)

    try:
        for i, val in enumerate(data):  #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

        #Update the whole sheet
        wks.update_cells(cell_list)

    except:
        print "Exception"

this_data_ex = [['data1', 'data1'], ['data2', 'data2']]
write_spreadsheet('python-test', 1, this_data_ex, 1)

這可行,但不會將列表行條目分成正確的列。 Google表格上的輸出如下所示:

    A                  B

['data1','data1'] ['data2','data2']

如何修復“ try-for”部分,將每個數據條目寫入新的單元格,然后將行包裝在正確的位置? (像這樣)

 A   |  B

data1 | 數據1

數據2 | 數據2

Double嵌套的for循環; 一個用於行,一個用於列,然后分別更新每個單元格。 本節似乎可以正常工作並達到預期的結果:

 try:
    idx = 0
    for (start_row, rowlist) in enumerate(data):
        for (colnum, value) in enumerate(rowlist):
            cell_list[idx].value = value
            idx += 1
            if idx >= len(cell_list):
                break

    # Update the whole sheet
    wks.update_cells(cell_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM