1

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

一旦我尝试打开 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()
4

1 回答 1

1

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

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

编辑 2:如果 Excel 无法打开文件,如下所述,那么数据本身可能就是问题所在。

于 2013-09-02T14:10:31.860 回答