2013-02-07 83 views
1

我对Python仍然很陌生,所以也许我缺少一些明显的东西。我正尝试从Google文档下载简单的电子表格,保存该文件并在Excel中打开它。当我用文本文件而不是Excel文件进​​行测试运行时,它运行良好。但是,使用xls和xlsx,当excel打开新下载的文件时,它表示数据已损坏。我怎样才能解决这个问题?下载Excel电子表格Python

import urllib2 

print "Downloading..." 
myfile = urllib2.urlopen("https://docs.google.com/spreadsheet/pub?key=0AoJYUIVnE85odGZxVHkybGxYRXF1TFpuQXdqZlJwNXc&output=xls") 
output = open('C:\\Users\\Lucas\\Desktop\\downloaded.xlsx', 'w') 
output.write(myfile.read()) 
output.close() 
print "Done" 

import subprocess 
subprocess.call(['C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.exe', 'C:\\Users\\Lucas\\Desktop\\downloaded.xlsx']) 
+1

当您打开文件进行写入时,您是否尝试过'wb'标志? – thegrinner

+1

你可能想尝试将'w'改为'wb'。 'b'标志的意思是“用二进制写入这个文件”,而不是潜在的ASCII或其他东西。 –

+1

* facepalm *谢谢你们,修复它 – LucasS

回答

0

你写在文件中纯文本,ASCII模式。 Excel文档不是纯文本:在此假设下,您将错误处理内容。

要按原样使用数据,对其格式使用零假设,请使用二进制模式。这里:

output = open('C:\\Users\\Lucas\\Desktop\\downloaded.xlsx', 'wb') 

注意'b'标志在最后。