小能豆

使用python更改Google电子表格单元格水平对齐方式

py

我一直在尝试用 Python 配置谷歌电子表格的单元格水平对齐格式。我已阅读原始谷歌开发者信息,也查看了面临相同问题的人提供的其他示例,但没有一个适用于我的示例。以下代码是我用来配置电子表格请求主体的代码。我想要做的是创建一个新的电子表格,其中所有单元格的水平对齐都居中。因此,当用户在任何单元格中输入任何内容时,它将自动居中。有什么建议吗?

spreadsheet_body = {
    'properties': {
        # spreadsheet name
        'title': sheet_name,
        "defaultFormat":{
            "horizontalAlignment":'CENTER'
        }
    },
    'sheets': [{
        'properties': {
            # worksheet name
            'title': 'Φύλλο1',
            'gridProperties': {
                # row\column number
                'rowCount': 100,
                'columnCount': 20
            },
        },
        'data': [{'rowData': [{'values': header_row}]}] # Added
    }
    ]
}


request = service.spreadsheets().create(body=spreadsheet_body)
response = request.execute()

阅读 6

收藏
2024-12-21

共1个答案

小能豆

我相信您的目标如下。

  • 当使用 Sheets API 的 spreadsheets.create 方法创建新的电子表格时,您需要设置单元格的水平对齐方式。
  • 您想使用 googleapis 和 python 来实现这一点。

问题和解决方法:

不幸的是,电子表格属性无法使用。这是当前规范。ziganotschka的回答"defaultFormat":{"horizontalAlignment":'CENTER'}中已经提到了这一点。

当我看到您的脚本时,创建的新电子表格只有一张表。在这种情况下,创建此表时,可以将表中所有单元格的水平对齐方式设置为CENTER。但在这种情况下,创建新表时,将使用默认格式。请小心这一点。所以这个答案是一种解决方法。

当此解决方法反映在您的脚本中时,它将变成如下所示。

修改后的脚本:

rowCount = 100
columnCount = 20

rowData = []
for r in range(1, rowCount):
    temp = []
    for c in range(0, columnCount):
        temp.append({'userEnteredFormat': {'horizontalAlignment': 'CENTER'}})
    rowData.append({'values': temp})
hlen = len(header_row)
if hlen < columnCount:
    for c in range(0, columnCount - hlen):
        header_row.append({'userEnteredFormat': {'horizontalAlignment': 'CENTER'}})
rowData.insert(0, {'values': header_row})

spreadsheet_body = {
    'properties': {
        # spreadsheet name
        'title': sheet_name
    },
    'sheets': [{
        'properties': {
            # worksheet name
            'title': 'Φύλλο1',
            'gridProperties': {
                # row\column number
                'rowCount': rowCount,
                'columnCount': columnCount
            },
        },
        'data': [{'rowData': rowData}]
    }]}

request = service.spreadsheets().create(body=spreadsheet_body)
response = request.execute()
2024-12-21