0

0

如何在不直接传递字节流的情况下读取 Excel 文件

花韻仙語

花韻仙語

发布时间:2026-01-09 14:54:32

|

727人浏览过

|

来源于php中文网

原创

如何在不直接传递字节流的情况下读取 Excel 文件

本文介绍解决 pandas `read_excel` 函数因直接传入字节数据(bytes)而触发弃用警告的问题,推荐使用 `bytesio` 封装字节流以构造文件类对象,确保代码兼容未来版本。

当从云存储(如 Azure Blob Storage、AWS S3)或内存中读取 Excel 文件时,常通过 .readall() 或 .getvalue() 获取原始字节(bytes),但 pandas.read_excel() 已明确弃用直接接收 bytes 类型参数的方式,否则会抛出如下警告:

FutureWarning: Passing bytes to 'read_excel' is deprecated and will be removed in a future version. 
To read from a byte string, wrap it in a `BytesIO` object.

✅ 正确做法是将字节数据包装为类文件对象(file-like object),io.BytesIO 是标准且轻量的解决方案:

from io import BytesIO
import pandas as pd

# 假设 blob_data 是来自 Azure BlobServiceClient 的 BlobClient 下载响应
# 或其他返回 bytes 的源(如 requests.get(...).content)
excel_bytes = blob_data.readall()  # type: bytes

# ✅ 关键:用 BytesIO 包装字节流,使其支持 seek()/read() 等文件操作
df = pd.read_excel(BytesIO(excel_bytes), engine='openpyxl')

? 补充说明与最佳实践:

Yodayo
Yodayo

一个专为动漫迷和vTuber打造的AI艺术创作平台、交流社区

下载
  • 引擎选择:engine='openpyxl' 适用于 .xlsx/.xlsm 文件;若处理旧版 .xls,请改用 engine='xlrd'(注意:xlrd ≥ 2.0 仅支持 .xls,已不再支持 .xlsx);
  • 内存效率优化:若文件较大,避免一次性 .readall() 加载全部内容,可改用流式读取(如 BytesIO(blob_data.read()) 配合分块逻辑),但 read_excel 本身暂不支持真正流式解析,因此 BytesIO 仍是当前最通用、最稳定的方案;
  • 替代库? 目前无主流替代库能绕过此封装步骤——openpyxl、xlrd、pyxlsb 等底层引擎均要求文件路径或类文件对象,而非裸字节;pandas 作为统一接口层,其设计正是基于此约定;
  • 扩展场景:该模式同样适用于 pd.read_csv()、pd.read_json() 等函数处理内存中的二进制数据。

? 总结:不要传 bytes,要传 BytesIO(bytes) —— 这不是权宜之计,而是 Pandas 官方推荐的标准化做法,兼顾向后兼容性与代码健壮性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

80

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

32

2026.01.31

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1926

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

656

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2395

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

47

2026.01.19

cdn加速软件有哪些
cdn加速软件有哪些

CDN加速软件可以帮助网站提高内容访问速度和用户体验,降低服务器负载。在选择CDN加速软件时,需要根据实际需求和预算进行权衡,选择合适的软件和服务商。cdn加速软件有AWS CloudFront、Azure Content Delivery Network、Google Cloud CDN、Fastly、Cloudflare和Incapsula。

332

2023.10.19

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

1454

2023.07.25

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 21.2万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号