Excel无法打开Python生成的CSV文件。

3
我有许多输出CSV文件的Python脚本。有时在Excel中打开这些文件很方便。安装OS X Mavericks之后,Excel不能正确地打开这些文件:Excel不解析文件,并且复制文件的行,直到内存用完为止。特别是,当Excel尝试打开文件时,会出现一个提示,上面写着:“未完全加载文件。”
以下是我用来生成CSV文件的代码示例:
import csv
with open('csv_test.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow([1,2,3])
    writer.writerow([4,5,6])

即使是以上代码生成的简单文件也无法在Excel中加载。但是,如果我在文本编辑器中打开CSV文件并将文本复制/粘贴到Excel中,使用“文本到列”解析它,然后从Excel中另存为CSV,那么我就可以重新打开CSV文件而没有问题。我需要在我的脚本中传递其他参数才能使Excel以与以前相同的方式解析CSV文件吗?还是我可以更改OS X Mavericks或Excel中的某些设置?谢谢。


2
绝对不是Python的问题。至于如何使用Excel,请在SuperUser上询问... - l4mpi
1
确认一下:上面的代码(当然,如果正确缩进)创建了一个 Excel 无法读取的 CSV 文件? - Jon Clements
在Mac上使用Excel,还是在Windows上使用Excel? - Josh Smeaton
我有类似的脚本,但只使用open(filename, 'w')而不是传递b标志。试试看?无论如何,我都无法复制您的问题。 - Josh Smeaton
这在OSX ML,python 2.7.2和excel 2011上完美运行。 - SheetJS
1
我在Excel for Mac 2011 (14.3.8)中遇到了相同的错误,打开使用PHP 5.3.27的fputcsv()函数在CentOS上生成的CSV文件。在安装Mavericks之前,这些相同的文件可以正常打开。因此,这可能是由于Mavericks下Excel的CSV导入出现了问题。 - Jeremy Wadhams
2个回答

6

1
你是对的!这既有趣又令人悲伤。 - Stef
1
哈哈,它起作用了。我99%确定这样的东西不会起作用;)顺便说一句,微软的链接已经失效了。 - Vaibhav Vishal
微软的KB链接确实已经失效了,即使是互联网档案馆的Wayback Machine也找不到它。然而,维基百科提供了一些关于他们专有的符号链接(SYLK)文件格式和CSV文件的有趣信息。 - martineau

3
可能的解决方案1:使用*.txt代替*.csv。在这种情况下,Excel(至少是2010版本)会显示一个导入数据向导,您可以在其中指定分隔符、字符编码、字段类型等。
更新:解决方案2: Python的“csv”模块有一个“方言”功能。例如,以下修改您的代码为我的环境生成有效的csv文件(Python 2.7,Excel 2010,Windows7,具有“;”列表分隔符的语言环境):
import csv
with open('csv_test2.csv', 'wb') as f:
    csv.excel.delimiter=';'
    writer = csv.writer(f, dialect=csv.excel)
    writer.writerow([1,2,3])
    writer.writerow([4,5,6])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接