我正在使用 Django,需要阅读上传的 xlsx 文件的表格和单元格。xlrd 应该可以,但是因为文件必须保留在内存中并且可能不会保存到某个位置,所以我不确定如何继续。
在这种情况下,起点是带有上传输入和提交按钮的网页。提交后,文件会被捕获request.FILES['xlsx_file'].file
并发送到处理类,该处理类必须提取所有重要数据以进行进一步处理。
的类型request.FILES['xlsx_file'].file
是 BytesIO 并且 xlrd 无法读取该类型,因为没有 getitem 方法。
将 BytesIO 转换为 StringIO 后,错误消息似乎保持不变'_io.StringIO' object has no attribute '__getitem__'
file_enc = chardet.detect(xlsx_file.read(8))['encoding']
xlsx_file.seek(0)
sio = io.StringIO(xlsx_file.read().decode(encoding=file_enc, errors='replace'))
workbook = xlrd.open_workbook(file_contents=sio)