如何使用openpyxl读取xlsx流文件

时间:2018-03-09 13:16:57

标签: python openpyxl

我正在尝试阅读流式xlsx文件。用户通过用户界面输入数据,然后通过xlsx中的流传输数据。我怎么看?我找不到任何文件。

cat text.xlsx | python myprogram.py

我如何阅读此流?任何帮助,将不胜感激。我不确定openpyxl是否允许这种读取。我正在使用python3

2 个答案:

答案 0 :(得分:1)

openpyxl.load_workbook的第一个参数filename不仅可以是文件名,还可以是类似文件的对象,而sys.stdin是表示程序stdin的类文件对象。< / p>

您需要它以二进制模式,请参阅有关二进制标准流的文档中的注释。

import sys
from openpyxl import load_workbook

wb = load_workbook(sys.stdin.buffer)
print(wb.sheetnames)

执行命令

$ cat test.xlsx | python test.py
['Sheet1', 'Sheet2']

答案 1 :(得分:0)

我没有足够的代表发表评论,因此我将此作为答案发布。

正如@CheradenineZK 提到的,如果输入来自(Azure)blob 存储,则需要将其包装在字节缓冲区中。我一直在努力弄清楚如何做到这一点......

import io
import openpyxl

bytes_in = io.BytesIO(myblob.read())
wb = openpyxl.load_workbook(bytes_in)

正在为我做伎俩。