簡體   English   中英

如何使用python GSPREAD找到谷歌電子表格的第一行空行?

[英]How to find the first empty row of a google spread sheet using python GSPREAD?

我正在努力編寫代碼,讓我找到谷歌工作表的第一行空行。

我正在使用來自 github.com/burnash/gspread 的 gspread 包

如果有人可以提供幫助,我會很高興:)

我目前剛剛導入了模塊並打開了工作表

scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name('ddddd-61d0b758772b.json', scope)

gc = gspread.authorize(credentials)

sheet = gc.open("Event Discovery")
ws = sheet.worksheet('Event Discovery')

我想找到第 1158 行,它是帶有函數的工作表的第一個空行,這意味着每次填充舊的空行時,它都會找到下一個空行見這里

我使用以下方法解決了這個問題:

def next_available_row(worksheet):
    str_list = list(filter(None, worksheet.col_values(1)))
    return str(len(str_list)+1)

scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name('auth.json', scope)
gc = gspread.authorize(credentials)
worksheet = gc.open("sheet name").sheet1
next_row = next_available_row(worksheet)

#insert on the next available row

worksheet.update_acell("A{}".format(next_row), somevar)
worksheet.update_acell("B{}".format(next_row), somevar2)

這種替代方法通過考慮可能跳過值的行(例如文檔中的花哨標題部分)以及對前N列進行采樣來解決已接受答案的問題:

def next_available_row(sheet, cols_to_sample=2):
  # looks for empty row based on values appearing in 1st N columns
  cols = sheet.range(1, 1, sheet.row_count, cols_to_sample)
  return max([cell.row for cell in cols if cell.value]) + 1

如果您可以指望之前填寫的所有行:

len(sheet.get_all_values()) + 1

會給你第一個免費行

get_all_values返回工作表數據的二維列表。 每個嵌套列表都是一行,因此 2D 列表的長度是包含任何數據的行數。

類似的問題是第一個空閑列:

from xlsxwriter.utility import xl_col_to_name
# Square 2D list, doesn't matter which row len you check
column_count = len(sheet.get_all_values()[0]) 
column = xl_col_to_name(column_count)
def find_empty_cell():
    alphabet = list(map(chr, range(65, 91)))
    for letter in alphabet[0:1]: #look only at column A and B
        for x in range(1, 1000):
            cell_coord = letter+ str(x)
            if wks.acell(cell_coord).value == "":
                return(cell_coord)

我使用這個有點草率的函數來查找第一個空單元格。 我找不到空行,因為其他列已經有了值。

哦,在 2.7 和 3.6 之間存在一些映射問題,需要我將字母表轉換為字符串。

import pygsheets        
gc = pygsheets.authorize(service_file='************************.json')
ss = gc.open('enterprise_finance')
ws = ss[0]
row_count = len(ws.get_all_records()) + 2
ws.set_dataframe(raw_output,(row_count,1), copy_index = 'TRUE', copy_head = 'TRUE')
ws.delete_rows(row_count , number=1)

暫無
暫無

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

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