Excel不希望打开通过ASP输出下载的XLSX文件

我使用ASP MVC3框架,创build一个Excel文件并使用内容types为“ application / vnd.openxmlformats-officedocument.spreadsheetml.sheet ”的FileResult操作输出它。

当试图打开Excel只是说“ 文件已损坏,无法打开”

当我打开用来发送输出的源代码生成的Excel文件时,它没有任何问题。 我也运行两个副本的字节文件比较和文件是相同的。 我试图通过电子邮件发送给我自己的损坏的文件和附件打开罚款。

这导致我相信这是一个标题或某种Excel / Windows安全configuration的问题。

如果是后者,那么我需要一个不会使客户端改变其安全设置的解决scheme。

编辑 – 发现设置:

我已经find了什么设置导致这个 – 在Excel的信任中心/受保护的视图设置中启用来源于互联网的文件受保护的视图

所以我想这个问题是 – 有没有办法让文件显示可信?

以下是响应标题:

  • caching控制:私人
  • 内容处置:附件;
  • 文件名=“报告 – 2012年3月19日星期一.xlsx”内容长度:20569
  • 内容types:应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

使输出的动作方法:

[HttpPost] public virtual FileResult Export() { try { ... string newFilePath = createNewFile(...); string downloadedFileName = "Report - " + DateTime.Now.ToString("D") + ".xlsx"; return File(newFilePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", downloadedFileName); } catch (Exception ex) { ... } } 

我如何创buildExcel文件:

我有一个模板XLSX文件witch列名称和其他工作表中的一些透视图。 从C#我创build此模板的副本,然后调用SQL Server使用OLEDB连接器输出数据到第一张:

 set @SQL='insert into OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database=' + @PreparedXLSXFilePath + ';'', ''SELECT * FROM [Data$]'') ... 

在此先感谢您的帮助。

您需要在Excel文件中进行数字签名。 如何从代码做到这一点是另一个问题。

更多信息:

http://www.delphifaq.com/faq/windows_user/f2751.shtml