我使用ASP MVC3框架,创建了一个Excel文件,并使用内容类型为“ application / vnd.openxmlformats-officedocument.spreadsheetml.sheet ”的FileResult操作输出。
尝试打开Excel时,只是说“文件已损坏,无法打开。”
当我打开用于发送输出的源生成的Excel文件时,它可以正常工作。我还对两个副本的字节运行文件比较,文件是相同的。我试图通过电子邮件将损坏的文件发送给自己,附件打开正常。
这让我相信它是标题或某种Excel / Windows安全配置的问题。
如果是后者,那么我需要一个不会让客户改变其安全设置的解决方案。
编辑 - 找到设置:
我在Excel的信任中心/受保护的视图设置中找到了导致此问题的设置 - “从源自互联网的文件启用受保护的视图”。
所以我想问题是 - 文件是否有办法可信?
以下是回复标题:
输出的操作方法:
[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)
{
...
}
}
我如何创建Excel文件:
我有一个模板XLSX文件,其中列名称和其他工作表中的一些数据透视表。从C#中我创建了这个模板的副本,然后调用SQL Server,它使用OLEDB连接器将数据输出到第一张表中:
set @SQL='insert into OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database=' + @PreparedXLSXFilePath + ';'', ''SELECT * FROM [Data$]'') ...
提前感谢您的帮助。
答案 0 :(得分:0)