从字节串读取.xlsx文件

时间:2018-09-26 09:30:30

标签: python xlsx bytestring

我正在尝试从电子邮件中读取附加的.xlsx文件。

我已经能够检索到一种email.message.Message类型的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文件。我已经上网了,但找不到任何解决方案。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

.xlsx是ZIP而不是GZip存档。这是两种完全不同的格式。

虽然您可以使用zipfile模块来获取其内容,但仍然需要一些专门的Excel文件包以使它们有意义。

答案 1 :(得分:1)

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])

答案 2 :(得分:0)

就您而言,

import sys
f = open("save.txt", 'r')
line = f.readlines()
sys.stdout = open('save.txt','w')
print(line)