【问题标题】:How to have bolded headers, but non-bolded cells - filled with worksheet.append_table of pygsheets==2.0.1如何有粗体标题,但非粗体单元格 - 填充 pygsheets==2.0.1 的 worksheet.append_table
【发布时间】:2019-06-07 21:37:34
【问题描述】:

下面的 python3 (pygsheets 2.0.1) 脚本将加粗从A2.开始的所有单元格
有没有一种简单的方法(即在一个命令中)要求所有这些单元格不要加粗?

代码:

import boto3, botocore
import datetime
import json
import pygsheets

currentDT = str(datetime.datetime.now())

def create_spreadsheet(outh_file, spreadsheet_name = "jSonar AWS usage"):
    client = pygsheets.authorize(outh_file=outh_file, outh_nonlocal=True)
    spread_sheet = client.create(spreadsheet_name)
    return spread_sheet


def get_regions():
    region = "us-west-1"
    regions = dict()

    ec2 = boto3.client("ec2", region_name=region)
    ec2_responses = ec2.describe_regions()

    ssm_client = boto3.client('ssm', region_name=region)
    for resp in ec2_responses['Regions']:
        region_id = resp['RegionName']
        tmp = '/aws/service/global-infrastructure/regions/%s/longName' % region_id
        ssm_response = ssm_client.get_parameter(Name = tmp)
        region_name = ssm_response['Parameter']['Value'] 
        regions[region_id] = region_name
    return(regions)


def rds_worksheet_creation(spread_sheet, regions, spreadsheet_index):
    worksheet = spread_sheet.add_worksheet("RDS", rows=100, cols=26, src_tuple=None, src_worksheet=None, index=spreadsheet_index)
    worksheet.cell('A1').set_text_format('bold', True).value = 'DBInstanceIdentifier'
    worksheet.cell('B1').set_text_format('bold', True).value = 'MasterUsername'
    worksheet.cell('C1').set_text_format('bold', True).value = 'Region'
    worksheet.cell('D1').set_text_format('bold', False).value = 'Sent Query to (Name)'
    worksheet.cell('E1').set_text_format('bold', False).value = 'Sent Query to (email)'
    worksheet.cell('F1').set_text_format('bold', False).value = 'WorksheetCreated: %s' % currentDT
    cells_data = list()
    for region, region_h in sorted(regions.items()):
        client = boto3.client('rds', region_name=region)
        clnt = boto3.client('ssm', region_name=region)
        db_instances = client.describe_db_instances()
        for instance in db_instances['DBInstances']:
            MasterUsername = instance['MasterUsername']
            DBInstanceIdentifier = instance['DBInstanceIdentifier']
            cells_data.append([DBInstanceIdentifier, MasterUsername, region_h])
    worksheet.append_table(cells_data, start='A2')


if __name__ == "__main__":
    spread_sheet = create_spreadsheet(spreadsheet_name = "jSonar AWS usage",
                                                            outh_file = '/home/qa/.aws/client_secret.json')
    regions = get_regions()
    rds_worksheet_creation(spread_sheet, regions, 0)
    spread_sheet.share("me@corp.com")

输出:

【问题讨论】:

  • 我为我糟糕的英语水平道歉。我可以问你关于你的问题吗? 1.你输出的图像是你想要的结果吗?如果是当前结果,能否提供你想要的结果? 2. 可以问一下all the cells starting at A2.吗? 2. 可以问一下i.e., in one command吗?
  • {1} 图片@Tanaike 显示了当前结果。 {2} 所有 2-20 行。
  • 感谢您的回复。不幸的是,我无法从您的回复中了解您的目标。我为我糟糕的英语水平道歉。

标签: python-3.x google-sheets google-sheets-api pygsheets


【解决方案1】:

如果我理解正确,您想在单个命令中取消多个单元格的粗体。

要将格式设置为一系列单元格,请创建一个 Datarange 并使用 apply_format

model_cell = Cell('A1')
model_cell.set_text_format('bold', False)
Datarange('A1','A10', worksheet=wks).apply_format(model_cell)

docs

【讨论】:

  • 感谢@nithin 的回答。如果我希望“A2”之后的所有单元格不加粗体,有没有比使用Datarange('A1','Z99999', worksheet=wks).apply_format(model_cell) 更优雅的方法来做到这一点? (我尝试删除 end_cell 参数,但得到了pygsheets.exceptions.InvalidArgumentValue: addr of type <class 'NoneType'>
  • 没有内置方法可以跳过这个。但你可以做Datarange('A1',(1, wks.cols), worksheet=wks)
  • 我认为这不是将所有非标题行加粗的正确方法(它只是将第一行加粗)。我最终使用(仍然不优雅):pygsheets.DataRange(start_cell, "ZZ%s" % worksheet.rows, worksheet=worksheet).apply_format(model_cell)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多