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

2024-05-19 22:11:21 发布

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

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

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()

Tags: 代码name信息titlerequest格式google水平
2条回答

在资源SpreadsheetProperties下指定:

defaultFormat

This field is read-only.

所以不幸的是,不可能用Sheets API创建一个所有单元格都自动居中的电子表格,就像不可能通过UI那样

我相信你的目标如下

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

问题和解决方法:

遗憾的是,无法使用电子表格属性的"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()

参考资料:

相关问题 更多 >