Railscasts第362页 - 导出到Excel:如何在打开文件时避免Excel 2010提供的警告消息?

Reb*_*ele 6 ruby excel xls ruby-on-rails railscasts

当使用从Ryan Bates的Railscasts情节#362的示例应用程序有关导出到Excel(https://github.com/railscasts/362-exporting-csv-and-excel),我已经注意到,Excel 2010中(这是Windows)在打开我使用"下载为Excel"链接下载的.xls文件时给出了一条警告消息.

警告如下:

"您尝试打开的文件格式与文件扩展名指定的格式不同.在打开文件之前,请验证文件是否已损坏且来自受信任的来源.您要立即打开该文件吗? "

点击"是",我可以正常打开文件.使用Excel 2011(在Mac上)时,我甚至没有收到警告消息.但我希望能够提供一个Excel文件,当用户从我的网站下载此类文件时,该文件不会提示该警告.

注意:我也尝试将应用程序中的所有引用从.xls替换为.xlsx,但Excel无法打开该文件.它抱怨:"Excel无法打开此文件.文件格式或文件扩展名无效.请验证文件是否已损坏,文件扩展名是否与文件格式匹配."

我知道的宝石,如AXLSX(的https://github.com/randym/axlsx),但希望我可以只使用Railscasts方法,并速战速决,以消除来自Excel 2010中的警告消息.

非常感谢你的帮助!

jmc*_*ara 7

Railscasts应用程序生成的xls文件实际上是旧Excel 2003 XML格式的XML文件.

最新版本的Excel有一个名为Extension Hardening的功能,当文件格式与文件扩展名不匹配时会生成此警告:

警报是Excel 2007中称为扩展强化的新安全功能,可确保打开的文件内容与尝试打开文件的shell命令中指定的扩展类型相匹配.由于上面列出的MIME类型与.XLS扩展名相关联,因此该文件必须采用XLS(BIFF8)文件格式才能打开,而不显示此警告提示.

为了避免此警告,您必须以与文件扩展名匹配的格式生成Excel文件.在上面的链接中根据建议编辑注册表可能在实践中是不可行的.将扩展名更改为xml也可能有效.

作为替代writeexcel为XLS,write_xlsx对于XLSX和AXLSX(你提到以上)都是不错的选择.