找到XLRD不支持的格式

时间:2013-09-02 14:07:29

标签: python django django-models xlrd

在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()

1 个答案:

答案 0 :(得分:1)

在我看来,这可能是一个unicode问题。我猜你的字符串中有非ASCII字符?尝试将.encode("utf-8")与字符串一起使用时将{{1}}保存到xls。

编辑:这是一个猜测,经过@Harry的更多调查,看起来这不是正确的解决方案。

编辑2 :如果下面讨论的Excel无法打开文件,则数据本身可能就是问题。