Python 找到XLRD不支持的格式
在WINDOWS上使用XLRD的0.9.2版和python 2.7 我正在创建一个临时文件,然后使用XLRD读取该文件Python 找到XLRD不支持的格式,python,django,django-models,xlrd,Python,Django,Django Models,Xlrd,在WINDOWS上使用XLRD的0.9.2版和python 2.7 我正在创建一个临时文件,然后使用XLRD读取该文件 data = self.excel_file path = default_storage.save('temp/temp.xls', ContentFile(data.read())) tmp_file = os.path.join(settings.MEDIA_ROOT, path) workbook = xlrd.open_workbook(tmp_file) 只要我尝
data = self.excel_file
path = default_storage.save('temp/temp.xls', ContentFile(data.read()))
tmp_file = os.path.join(settings.MEDIA_ROOT, path)
workbook = xlrd.open_workbook(tmp_file)
只要我尝试打开XLS文件,它就会返回错误
xlrd.biffh.XLRDError: Unsupported format found '\xd0\xcf\x11\xe0\xa1\xb1\x00\x00'
所以我猜上面的文件没有正确保存。不确定该怎么办,因为在文件字段中使用django admin上传文件时,这是有效的
在python中将这样的文件保存到django模型会产生上述问题:
from django.core.files import File
p = Foo()
p.excel_file.save(file_name, File(data))
p.save()
在我看来,这可能是一个unicode问题。我猜字符串中有非ASCII字符?将字符串保存到xls时,请尝试使用
.encode(“utf-8”)
编辑:这是一个猜测,经过@Harry的进一步调查,看起来这不是正确的解决方案
编辑2:如果文件无法按下面讨论的那样用Excel打开,那么数据本身可能就是问题所在。在我看来,这可能是一个unicode问题。我猜字符串中有非ASCII字符?将字符串保存到xls时,请尝试使用
.encode(“utf-8”)
编辑:这是一个猜测,经过@Harry的进一步调查,看起来这不是正确的解决方案
编辑2:如果文件无法按下面讨论的那样用Excel打开,那么数据本身可能就是问题所在。是的-值得一试。这就是:UnicodeDecodeError:“ascii”编解码器无法解码0位置的字节0xd0:序号不在范围内(128)@Harry为什么不看看tmp文件中的内容?嗯,似乎我不能用excel打开它。。一定是这样then@Harry-是的,看起来错误的来源不同。我编辑我的答案以反映这种可能性。是的-值得一试。这就是:UnicodeDecodeError:“ascii”编解码器无法解码位置0处的字节0xd0:序号不在范围内(128)@Harry为什么不看看tmp文件中有什么?嗯,似乎我无法用excel打开它。。一定是这样then@Harry-是的,看起来错误的来源不同。我编辑我的答案以反映这种可能性。