openpyxl 打开文件报错 大佬麻烦看看
from openpyxl import load_workbookdef zzzz(request):
# if request.method == "GET":
# return render(request, "zi.html")
fff = request.FILES.get("aaa")
print(type(fff))
wb = load_workbook(fff)
print(wb)
she = wb.worksheets
print("she",she)
cell = she.cell(1,1)
print(cell)
return render(request, "zi.html")
报错截图
大佬麻烦看看这个 看起来路径没传对,传了一个None类型,也就是你的请求中没有名字为 aaa 的 files
from openpyxl import load_workbook
def zzzz(request):
# if request.method == "GET":
# return render(request, "zi.html")
fff = request.FILES.get("aaa")
print(type(fff))
wb = load_workbook(fff)
print(wb)
she = wb.worksheets
print("she",she)
cell = she.cell(1,1)
print(cell)
return render(request, "zi.html") 你的错误显示为TypeError:expected str,bytes or os.PathLike object,not NoneType ,这个错误说明load_workbook函数尝试接收一个字符串、字节或 os.PathLike 对象,但是它接收到的是 None。
从你的代码来看,你是用request.FILES.get("aaa")尝试获取上传的文件。错误可能出在这里, request.FILES.get("aaa")可能返回了 None,也就是说它没有成功地获取到文件。因此当你尝试用load_workbook打开这个文件时,它实际上在尝试打开一个 None,这就导致了你看到的错误。
为了解决这个问题,你需要确保你在request.FILES中确实有一个名为 "aaa" 的文件。你可以通过以下方式检查:
def zzzz(request):
if 'aaa' not in request.FILES:
print("No file uploaded with name 'aaa'")
return render(request, "zi.html")
fff = request.FILES.get("aaa")
print(type(fff))
wb = load_workbook(fff)
print(wb)
she = wb.worksheets
print("she",she)
cell = she.cell(1,1)
print(cell)
return render(request, "zi.html")
上述代码会先检查request.FILES中是否包含一个名为 "aaa" 的文件,如果没有,就会打印一个错误信息并返回。
另外,根据 openpyxl 的文档, load_workbook函数接受一个文件名字符串作为参数。如果你试图直接传入文件对象,可能会导致问题。你可能需要先将文件保存到磁盘上,然后传入文件名,或者尝试读取文件的内容然后使用 BytesIO 对象。
比如你可以试试这样的方式:
import io
from openpyxl import load_workbook
def zzzz(request):
if 'aaa' not in request.FILES:
print("No file uploaded with name 'aaa'")
return render(request, "zi.html")
fff = request.FILES.get("aaa")
file_content = fff.read()
wb = load_workbook(filename=io.BytesIO(file_content))
print(wb)
she = wb.worksheets
print("she",she)
cell = she.cell(1,1)
print(cell)
return render(request, "zi.html")
上述代码会先从上传的文件中读取所有的内容,然后用BytesIO创建一个类文件对象,并将这个对象传递给load_workbook函数。
页:
[1]