在gspread(Python)中插入下面的新行?

2024-06-12 10:16:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用gspread模块,最近在insert_row()模块中遇到了这个问题:默认情况下,这个函数会在上面添加一个新行。这种方法的问题是“在上面添加行”会将行的格式向上拖动。类似地,“在下面添加行”将向下拖动行的格式

在我的电子表格中,我有几个小节,每个小节都有不同的格式和公式,例如A1:J15范围是一个小节。然后,第16-17行用作分隔符,颜色为深灰色,其中没有任何信息或公式

我想扩大A1:J15的范围。我认为使用sheet_instance.insert_row(values=None, index=row_index)会很容易,但是,如上所述,如果我将row_index设置为16以添加上面的新行,深灰色分隔符现在将获得一个新行,并且我将丢失该部分中(新)第16行的所有公式

如果我将row_index设置为15,那么新行的公式和格式就准备好了。但是,在这种情况下(新的)第15行将不在正确的位置,因为该数据必须位于节的最后一行,但是由于gspread添加了上面的行,现在最后两行数据被交换,这是不正确的

有没有办法强制insert_row()向下添加行?如果没有,我还有什么其他选择来避免这个问题

编辑: 我也尝试使用append_rows(),将其table_range属性设置为与我的子区域范围相同,即A1:J15,但没有成功:

sheet_instance.append_rows(values=[None]*2, insert_data_option='INSERT_ROWS', table_range='A1:J15')

Tags: 模块instanceindexa1格式情况sheet公式
1条回答
网友
1楼 · 发布于 2024-06-12 10:16:22

我设法解决了它。结果是在GoogleSheetsAPI中有一个“Insert empty row/column”请求,它有一个inheritFromBefore参数,正是我需要的参数。通过将此参数设置为True,我可以强制从上方拖动插入格式,即复制“在下方插入行”功能

我的代码如下:

body = {
    'requests': {
        'insertDimension': {
            "range": {
              "sheetId": sheet_instance.id,
              "dimension": "ROWS",
              "startIndex": row_idx-1,
              "endIndex": row_idx
            },
            "inheritFromBefore": True
        }
    }
}
for _ in range(3):
    response = service.spreadsheets().batchUpdate(
        spreadsheetId=sheet_id,
        body=body).execute()

上面的代码在原始row_idx行之前插入3个新行

相关问题 更多 >