先描述一波问题场景:
需求是项目中调接口会下载Excel文件,然后解析出Excel文件中固定行列的值即可。如果直接读取Excel文件,使用xlrd库即可。但是调下载接口返回的二进制的内容~~~,如下:
b'PK\x03\x04\x14\x00\x08\x08\x08\x00]UNS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00_rels/.rels\xad\x92\xcfN\xc30\x0c\x87\xef}\x8a(\xf7\xd5\xdd@\x08\xa1\xb6\xbbLH\xbb!4\x1e $\xee\x1f\xb5\x89\xa3\xc4\x83\xf2\xf6\x84I\x13\x0c1\xba\xc3\x8eI~\xfe\xfc\xc9N\xb9\x9e\xec(\xde0\xc4\x9e\\%\x97y!\x05:M\xa6wm%_v\x8f\x8b{\xb9\xae\xb3\xac|\xc6Qq\xca\xc4\xae\xf7。。。。。’
如何用xlrd去解析二进制的Excel内容呢? 头大。。。
想法1:把二进制转成Excel文件?? ? --- 暂时没有考虑怎么做
想法2:xlrd库是否支持读二进制Excel内容解析表格内容呢?? ---- 没百度到
想法3:把返回的二进制内容存到文档,看看xlrd内容读该文件? ---- 一试果然可以。时间紧迫,先找个方法实现再考虑其他方式。
正题---采用想法3实现思路:
1、将接口返回的二进制文件存储到本地 (我存成了.txt文件)
2、使用xlrd读取Excel文件的方式读取.txt文件,按正常解析xls文件行列内容即可
代码如下
import xlrd
def parse_bytes_excel(excel_bytes):
'''excel_bytes 为下载接口返回的二进制Excel内容'''
# 把二进制内容先存储到test.txt文件
with open(‘test.txt’, 'wb') as f:
f.write(excel_bytes)
data = xlrd.open_workbook(‘test.txt’) # 读取二进制内容
table = data.sheet_by_index(0) # 读取第一个sheet页
nrows = table.nrows # 行数
ncols = table.ncols # 列数
for i in range(nrows):
if i == 0:
continue
desc = table.cell(i, 3).value # 读取除标题第一行以后每行的第3列值
print(desc)
可正确返回Excel表对应列内容。
后续有时间可再考虑其他实现方式~~~~
Python 使用xlrd解析Excel文件参考: python xlrd模块读取Excel内容_LOVEYSUXIN的专栏-CSDN博客
|