在WINDOWS上使用版本0.9.2的XLRD和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)
一旦我尝试打开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()
答案 0 :(得分:1)
在我看来,这可能是一个unicode问题。我猜你的字符串中有非ASCII字符?尝试将.encode("utf-8")
与字符串一起使用时将{{1}}保存到xls。
编辑:这是一个猜测,经过@Harry的更多调查,看起来这不是正确的解决方案。
编辑2 :如果下面讨论的Excel无法打开文件,则数据本身可能就是问题。