我正在尝试使用Sheetfu库的 get_data_range()获得实际的A1值。
当我使用下面的代码时,它可以很好地工作,并且我得到了期望的结果。
invoice_sheet = spreadsheet.get_sheet_by_name('Invoice')
invoice_data_range = invoice_sheet.get_data_range()
invoice_values = invoice_data_range.get_values()
print(invoice_data_range)
print(invoice_values)
从print()语句中得到:
<Range object Invoice!A1:Q42>
[['2019-001', '01/01/2019', 'Services']...] #cut for brevity
获得“ A1:Q42”值的最佳方法是什么?我真的只想要范围的末端(Q42),因为我需要构建 get_range_from_a1()参数“ A4:Q14”。我的工作表具有已知的标题(第1-3行),并且 get_values()包括3个在 get_values()列表中不需要的行。
我想我可以做一些字符串操作以拉出“:”和“>”之间的文本
<Range object Invoice!A1:Q42>
...但是似乎有点草率。
快速地说,能够像这样调用 get_data_range()真是太棒了:
invoice_sheet = spreadsheet.get_sheet_by_name('Invoice')
invoice_data_range = invoice_sheet.get_data_range(start="A4", end="")
invoice_values = invoice_data_range.get_values()
...但这更像是功能请求。 (我很乐意做顺便说一句)。
答案 0 :(得分:1)
我收到了Sheetfu的所有者的回复,以下代码提供了我所需要的信息。 示例代码:
from sheetfu import SpreadsheetApp
spreadsheet = SpreadsheetApp("....access_file.json").open_by_id('long_string_id')
sheet = spreadsheet.get_sheet_by_name('test')
data_range = sheet.get_data_range()
range_max_row = data_range.coordinates.row + data_range.coordinates.number_of_rows - 1
range_max_column = data_range.coordinates.column + data_range.coordinates.number_of_columns - 1
截至本文撰写时, .coordinates 属性目前尚未记录,但可以使用,应在接下来的几周内正式记录。
答案 1 :(得分:1)
作者在这里。艾伦回答得很好。 我在库的范围级别添加了一些方法,这些方法只是坐标属性的快捷方式。
from sheetfu import SpreadsheetApp
spreadsheet = SpreadsheetApp("....access_file.json").open_by_id('long_string_id')
sheet = spreadsheet.get_sheet_by_name('test')
data_range = sheet.get_data_range()
starting_row = data_range.get_row()
starting_column = data_range.get_column()
max_row = data_range.get_max_row()
max_column = data_range.get_max_column()
这将有效地告诉您包含工作表中数据的最大行和最大列。
如果使用get_data_range
方法,则第一行和第一列通常为1。