如何在Excel下载压缩文件损坏警告?

我有一个链接到Excel 2007工作表的网页。 这是一个.xls文件,而不是.xlsx文件。 当我点击链接,我得到通常的对话框来打开/保存Excel文件。 点击“打开”,我收到以下警告信息 –

您尝试打开的文件'filename.xls'采用与文件扩展名指定的格式不同的格式。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 你想现在打开文件吗?

我可以如何以编程方式压制此警告消息(即隐藏或防止它显示?)我正在使用ColdFusion进行Web开发。

这个问题是由一个名为Extension Hardening的function引起的,您可以在这里find更多关于它的信息

我已经在我的项目中遇到了这个问题,像Jon说的那样,closuresExtension Hardening是每个客户端用户都必须完成的事情。

不幸的是,上面的链接还指出,至less在Office 14之前,这个代码没有预期的变化。

如果您不想查找解决scheme,但只想解决问题,请在registry中插入此密钥以取消通知:

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 12.0 \ Excel \ Security]“ExtensionHardening”= dword:00000000

您可以通过执行以下操作来完成上述操作:

  1. 打开你的registry(开始 – >运行 – > regedit.exe)
  2. 导航到HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. 右键单击右边的窗口,selectNew – > DWORD
  4. input“ExtensionHardening”作为名称(不带引号)
  5. 确认数据的值为“0”

对于旧的Excel格式(.xls)

假设您使用以下语法创build电子表格对象:

 <cfset sheet = SpreadsheetNew() /> 

你可以用它来创build下载:

 <cfheader name="content-disposition" value="attachment;filename=my_spreadsheet.xls"> <cfcontent type="application/vnd.ms-excel" variable="#spreadsheetReadBinary(sheet)#" reset="true"> 

对于较新的Excel格式(.xlsx)

使用以下语法创build电子表格对象:

 <cfset sheet = SpreadsheetNew("", "true") /> 

并用它来创build下载:

 <cfheader name="content-disposition" value="attachment;filename=my_xml_spreadsheet.xlsx"> <cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sheet)#" reset="true"> 

感谢Raymond Camden的大部分工作(他的例子是以旧格式创build电子表格 – 我更新了新的格式并使用稍微不同的MIME值)。

该消息表明文件内容和文件扩展名不匹配。 因此,无论是XLSX文件还是服务器上的当前文件都以某种方式损坏。 我build议尝试用ZIP工具打开文件。 如果这样的话,它确实是一个XLSX格式的文件。 然后,您可以通过重命名文件来修复警告。

如果情况并非如此,则文件发生了一些情况。

但无论如何,抑制警告不是解决您的问题。 下一次病毒出现,并要求您的客户打开nakedgrls.gif.exe ,你最好不要搞乱安全设置。

如果您使用方便的cfcontent技巧输出为excel文件,请考虑使用cfx_query2excel,它会写出真正的excel文件,让您过去这一点。 这是一个Java库,是值得的。

祝你好运。

如果您没有指定文件扩展名,则可能会被命名为.cfm文件,其内容types为“application / vnd-excel”,从而导致此警告。

尝试在文件输出开始之前添加它:

 <cfheader name="Content-Disposition" value="attachment;filename=myexcelfile.xls"> <cfcontent type="application/ms-excel" reset="true"> 

我不相信你可以把它从用户隐藏。 这些警告是您浏览器的外部。

我有同样的问题和客户抱怨。 我做了很多的search,但没有运气。 最后,我用cfspreadsheet创build了电子表格,我知道它需要额外的工作,而不是直接通过HTML创build,但是它会删除警告。