You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过gspread Python库获取电子表格行列的宽高?

获取Google Sheets行列宽高(gspread实现)

gspread的get_effective_format方法仅返回单元格的样式属性(如颜色、字体、边框),行列的宽高属于工作表的行列元数据,不在单元格格式范围内,所以无法通过该方法获取。要获取当前行列的尺寸,需要直接调用Google Sheets API的底层接口,gspread提供了request方法来实现这一点。

实现步骤与代码示例

  1. 利用gspread的request方法调用spreadsheets.get接口,指定返回行列的pixelSize属性(即宽高的像素值)。
  2. 过滤返回结果,提取目标工作表的行列尺寸数据。
import gspread
from google.oauth2.service_account import Credentials

# 初始化认证(已完成认证可直接复用现有client)
scopes = ["https://www.googleapis.com/auth/spreadsheets"]
creds = Credentials.from_service_account_file("你的凭证文件路径.json", scopes=scopes)
client = gspread.authorize(creds)

# 打开目标表格
spreadsheet = client.open("你的表格名称")
spreadsheet_id = spreadsheet.id

# 调用Sheets API获取行列尺寸
response = client.request(
    method="get",
    url=f"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheet_id}",
    params={
        # 指定仅返回行列的像素尺寸,减少数据传输量
        "fields": "sheets(properties(title),rowMetadata(pixelSize),columnMetadata(pixelSize))"
    }
)

# 解析并输出结果
sheets_data = response.json()["sheets"]
for sheet in sheets_data:
    sheet_title = sheet["properties"]["title"]
    print(f"=== {sheet_title} ===")
    
    # 获取所有行高
    if "rowMetadata" in sheet:
        row_heights = [idx+1 for idx, row in enumerate(sheet["rowMetadata"])]
        row_pixels = [row["pixelSize"] for row in sheet["rowMetadata"]]
        print("行高(像素):")
        for row_num, pixel in zip(row_heights, row_pixels):
            print(f"行{row_num}: {pixel}px")
    
    # 获取所有列宽
    if "columnMetadata" in sheet:
        # 列号转字母(如1→A,2→B)
        def col_num_to_letter(num):
            letter = ""
            while num > 0:
                num, remainder = divmod(num - 1, 26)
                letter = chr(65 + remainder) + letter
            return letter
        
        col_letters = [col_num_to_letter(idx+1) for idx, col in enumerate(sheet["columnMetadata"])]
        col_pixels = [col["pixelSize"] for col in sheet["columnMetadata"]]
        print("\n列宽(像素):")
        for col_letter, pixel in zip(col_letters, col_pixels):
            print(f"列{col_letter}: {pixel}px")

优化技巧

  • 如果只需要特定工作表的尺寸,可在params中添加ranges参数指定工作表,例如"ranges": "Sheet1",避免返回所有工作表的数据。
  • 若仅需单个行/列的尺寸,可细化ranges范围,比如"ranges": "Sheet1!3:3"(获取第3行高度)或"ranges": "Sheet1!C:C"(获取C列宽度)。

内容的提问来源于stack exchange,提问作者Adam Higgins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:00:06