【发布时间】:2016-05-15 14:10:33
【问题描述】:
我有一个允许用户上传 xlsx 文件的 django 服务器,我想访问其中的数据。
我知道 openpyxl,但是,它似乎无法解析打开的文件,我不想将文件保存在磁盘上并再次读取。
我该怎么做?
【问题讨论】:
-
您必须编写自己的代码才能将 zip 存档传递到 openpyxl。最好把它保存在某个地方。
我有一个允许用户上传 xlsx 文件的 django 服务器,我想访问其中的数据。
我知道 openpyxl,但是,它似乎无法解析打开的文件,我不想将文件保存在磁盘上并再次读取。
我该怎么做?
【问题讨论】:
其实比上面简单:
from openpyxl import load_workbook
...
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
wb = load_workbook(filename=request.FILES['file'].file)
FILES['file'] 的 file 属性已经返回一个 BytesIO 实例;)
【讨论】:
将其作为字节流读取。 This explanation 帮助我完成了同样的任务 我的解决方案:
from openpyxl import load_workbook
from io import BytesIO
...
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
file_in_memory = request.FILES['file'].read()
wb = load_workbook(filename=BytesIO(file_in_memory))
【讨论】: