python - 从字节串中读取 .xlsx 文件
问题描述
我正在尝试从电子邮件中读取附加的 .xlsx 文件。
我已经能够检索具有email.message.Message
type 一部分的类型application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
。我应该可以使用
file = part.get_payload(decode=True)
这给了我一个以字节开头的对象
b'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00\x93\xe11\xb6\x93\x01\x00\x003\x07\x00\x00\x13\x00\
我想将其解析为字典
io.BytesIO(gzip.decompress(file))
对于某些带有压缩 .csv 文件的电子邮件,这可以工作,但 .xlsx 文件无法使用这种方法打开。我在网上查看过,但我找不到任何解决方案。任何帮助将不胜感激。
解决方案
Excel 文件以压缩形式出现,并在加载到 Excel 本身时自动解压缩。
该openpyxl
库能够直接加载这些 Excel 文件,例如:
import openpyxl
import io
xlsx = io.BytesIO(part.get_payload(decode=True))
wb = openpyxl.load_workbook(xlsx)
ws = wb['Sheet1']
for cells in ws.iter_rows():
print([cell.value for cell in cells])
推荐阅读
- matlab - 如何使用 MATLAB 在单个图形中叠加多个图像图形?
- sql - 将缺失的日期插入现有表
- node.js - 构建具有依赖项的 monorepo babel-transpiled 节点 JS 应用程序
- reactjs - React - 获取功能组件中的组件名称
- python - 如何通过 BeautifulSup 的标签选择来下载视频
- c# - 如何使用 Filesystemwatcher 通过默认应用程序打开检测到的文件
- svg - feColorMatrix 的第五列到底代表什么
- r - 添加以每个元素的名称作为值的新列
- r - 如何使用工具变量在 R 中进行 2 阶段逻辑回归
- java - 导航抽屉中的 setText