使用Python 2.7导出CSV以在Mac上的Excel中以utf-8格式打开

时间:2019-06-18 21:09:08

标签: django excel python-2.7 csv unicode

我们有一些用户需要能够将数据导出到支持utf-8字符的Mac计算机上的Excel中打开的csv中。

注意:我们不希望用户必须转到数据选项卡,单击从文本导入,然后...我们希望他们能够在下载后立即打开文件并让其显示正确的信息。

起初,我以为这只是一个编码/解码问题,因为我们使用的是python 2.7(积极致力于升级到python 3.6),但是在解决此问题后,我发现Excel是造成此问题的原因(因为在文本编辑器或“数字”中打开csv时效果很好。我正在尝试的解决方案涉及将utf-8 BOM添加到文件的开头,因为我在某处读取到此内容,这会让Excel知道它需要utf-8。

#Here response is just a variable that is valid when used like this and 
#we can export CSV's fine that don't need utf-8    
writer = csv.writer(response)
writer.writerow("0xEF0xBB0xBF")

我希望但只将utf-8 BOM添加到csv文件的开头将使Excel意识到打开该文件时需要使用utf-8编码,但是可惜它不起作用。我不确定这是因为Excel for MAC不支持此功能还是我只是错误地添加了BOM表。

编辑:我不确定为什么我没有提到它,因为它在解决方案中很关键,但是我们使用的是Django。我发现this堆栈溢出帖子给出了解决方案(我在下面提供了该帖子)。

1 个答案:

答案 0 :(得分:0)

因为我们使用的是Django,所以我们可以添加:

response.write('\xEF\xBB\xBF')

在创建csv编写器并将内容添加到csv之前。

可能会导致解决方案的另一个想法是正常打开文件,添加BOM,然后创建一个csv编写器(注意:我没有测试这个想法,但是如果上述解决方案对某人无效/他们没有使用Django,可以尝试使用。)