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

如何读取Google Storage中的xlsx格式blob文件并使用openpyxl加载?

问题原因

你出现报错的核心原因是openpyxl.load_workbook的filename参数不支持直接传入字节类型数据,你将GCS下载得到的字节流直接传给该参数时,openpyxl会将其作为文件名路径解析,自然无法识别为xlsx格式。

解决方法

你只需要用Python标准库io中的BytesIO将下载得到的字节流包装为类文件对象,再传给load_workbook即可正常读取,完整可运行代码如下:

from google.cloud import storage
from openpyxl import load_workbook
from io import BytesIO

client = storage.Client()
new_bucket = client.get_bucket('bucket.appspot.com')

# 获取blob对象
o = new_bucket.get_blob('old_version.xlsx')
# 下载为字节
bytes_version = o.download_as_bytes()
# 包装为类文件对象后传入openpyxl
wb = load_workbook(filename=BytesIO(bytes_version), data_only=True)

可选排查方案

如果修改代码后仍然报错,可按以下顺序排查:

  • 打印o.size属性,对比该值和本地原始xlsx文件的大小是否一致,确认文件上传到GCS的过程中没有出现损坏、漏传的问题
  • 可先将下载的字节流写入本地测试文件,确认文件本身可正常用Excel打开:
with open('local_test.xlsx', 'wb') as f:
    f.write(bytes_version)
  • 检查上传文件到GCS的逻辑,确认是按二进制方式读取本地xlsx文件后上传,避免上传过程中对文件内容做了编码转换导致损坏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:04