如何在Excel下载中抑制文件损坏警告?

时间:2009-06-02 15:00:40

标签: excel coldfusion

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

  

您要打开的文件,   'filename.xls'与众不同   格式比文件指定的格式   延期。验证文件不是   已损坏且来自可靠来源   在打开文件之前。你想要   现在打开文件?

我是否可以通过编程方式抑制此警告消息(即隐藏它或阻止它显示?)我正在使用ColdFusion进行Web开发。

8 个答案:

答案 0 :(得分:18)

如果您不想寻找解决方案,但只想解决问题,请在注册表中插入此密钥以禁止通知:

[HKEY_CURRENT_USER \软件\微软\办公室\ 12.0 \ EXCEL \安全] “ExtensionHardening” = DWORD:00000000

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

  1. 打开您的注册表(开始 - >运行 - > regedit.exe)
  2. 导航至HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. 右键单击右侧窗口,然后选择新建 - >; DWORD
  4. 键入“ExtensionHardening”作为名称(不带引号)
  5. 验证数据的值是否为“0”

答案 1 :(得分:10)

此问题是由名为“扩展加固”的功能引起的,您可以找到有关它的更多信息here

我在我的项目中经常遇到这个问题,就像Jon说的那样,关闭扩展加固是必须由每个客户端用户完成的。

不幸的是,上面的链接还指出,至少在Office 14之前,此代码没有预期的更改。

答案 2 :(得分:2)

对于旧的Excel格式(.xls)

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

<cfset sheet = SpreadsheetNew() /> 

您可以使用它来创建下载:

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

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

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

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

并使用它来创建下载:

<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的大部分内容(他的示例是以旧格式创建电子表格 - 我更新了较新的格式并使用稍微不同的MIME值。)

答案 3 :(得分:0)

我不相信你可以将它隐藏起来。这些警告在浏览器外部。

答案 4 :(得分:0)

该消息表明文件内容与文件扩展名不匹配。所以无论是XLSX文件还是服务器上的当前文件都以某种方式被破坏。我建议尝试使用ZIP工具打开文件。如果可行,它实际上是一个XLSX格式的文件。然后,您可以通过重命名文件来修复警告。

如果情况并非如此,那么文件就会发生一些事情。

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

答案 5 :(得分:0)

如果您使用方便的cfcontent技巧作为excel文件输出,请考虑使用cfx_query2excel,它将编写真正的excel文件,它们可以让您通过它。它是一个Java库,非常值得。

祝你好运。

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

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

相关问题