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

使用Google Sheets API导入Excel数据出现空白列如何解决

核心问题原因

Excel中Range.CurrentRegion会返回和指定单元格相连的整个连续数据矩形区域,不会因为你指定C1为起点就只返回C列及之后的内容。如果你的原Excel数据是从A列开始的连续区域,此时rngData里会包含A、B列的完整内容,你再把整份数据写入Google Sheet的C1位置,就会导致Google Sheet的A、B列为空白,原Excel内容整体右移两列,也就是你看到的两列空白列。

解决方案

根据你的需求可以选择以下任意一种方案:

方案1:完全对齐原Excel结构写入

如果需要Google Sheet内容和原Excel完全一致,直接修改读取和写入的起始位置即可:

# 直接读取原Excel完整的连续区域
rngData = ws.Range('A1').CurrentRegion()

# 写入到Google Sheet的A1起始位置,结构就和原Excel完全匹配
response = drive_service.spreadsheets().values().append(
    spreadsheetId=gsheet_id,
    valueInputOption='RAW',
    range='A1',
    body=dict(
        majorDimension='ROWS',
        values=rngData
    )
).execute()

方案2:仅导入原Excel C列及之后的内容

如果只需要导入原Excel C列开始的内容,修改读取Excel的代码,不要用CurrentRegion,直接指定要读取的列范围,或者对读取到的数组做切片过滤:

rngData = ws.Range('C1').CurrentRegion()
# 切片去掉每行前两列(A、B列)的内容
filtered_data = [row[2:] for row in rngData]

response = drive_service.spreadsheets().values().append(
    spreadsheetId=gsheet_id,
    valueInputOption='RAW',
    range='A1', # 从Google Sheet第一列开始写入过滤后的数据
    body=dict(
        majorDimension='ROWS',
        values=filtered_data
    )
).execute()

方案3:对已导入的数据批量删除空白列

如果数据已经导入到Google Sheet,可以调用batchUpdate接口直接删除空白列:

batch_request = {
    "requests": [
        {
            "deleteDimension": {
                "range": {
                    "sheetId": 0, # 默认第一个工作表的id为0,其他sheet请替换为对应id
                    "dimension": "COLUMNS",
                    "startIndex": 0,
                    "endIndex": 2 # 左闭右开,删除索引0、1对应的A、B两列
                }
            }
        }
    ]
}
response = drive_service.spreadsheets().batchUpdate(
    spreadsheetId=gsheet_id,
    body=batch_request
).execute()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:00