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

如何使用openpyxl读取API请求中来自Angular的Excel文件?

如何用openpyxl读取API请求中的FileStorage类型Excel文件

直接通过两种方式可以解决问题,以下是具体代码和错误原因说明:


可行方案

方案1:直接使用FileStorage对象的stream属性

Flask的FileStorage对象本身就是类文件对象,直接传入load_workbook即可,注意先将文件指针重置到起始位置:

from flask import request
import openpyxl

if 'sfile' in request.files:
    sfile = request.files['sfile']
    sfile.seek(0)  # 确保读取从文件开头开始
    workbook = openpyxl.load_workbook(sfile)

方案2:用BytesIO包装文件字节数据

如果需要先处理字节数据,可将读取到的字节包装为BytesIO类文件对象后传入:

from flask import request
import openpyxl
import io

if 'sfile' in request.files:
    file_data = request.files['sfile'].read()
    file_stream = io.BytesIO(file_data)
    workbook = openpyxl.load_workbook(file_stream)

之前的错误原因

  • 用open(sub_odk)报错:open函数需要文件路径,你传入的是字节数据,且默认文本模式会尝试用UTF-8解码二进制Excel文件,导致解码失败。
  • 第一次用BytesIO仍报错:大概率是openpyxl版本过低,升级到最新稳定版即可解决(执行pip install --upgrade openpyxl)。
  • 直接传字节给load_workbook报错:该函数不支持原始字节作为参数,仅接受文件路径或类文件对象(如BytesIO、FileStorage)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:50:23