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

dwbf0jvd  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(129)

我使用ASP MVC 3框架,创建了一个Excel文件,并使用FileResult操作将其输出,内容类型为“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”。
当试图打开它时,Excel只是说“文件已损坏,无法打开”。
当我打开用于发送输出的源代码生成的Excel文件时,它可以正常工作,没有任何问题。我还运行文件比较的字节为两个副本和文件是相同的。我试图通过电子邮件将损坏的文件发送给自己,附件打开正常。
这让我相信这是一个标题或某种Excel/Windows安全配置的问题。
如果是后者,那么我需要一个不会让客户端更改其安全设置的解决方案。

编辑-找到设置:

我已经找到了导致此问题的设置-Excel的信任中心/受保护视图设置中的“启用来自Internet的文件的受保护视图”。
所以我想问题是-有没有一种方法可以让文件看起来可信?

以下是响应头:

  • 缓存控制:私有
  • 内容-处置:依附;
  • filename=“Report - Monday,March 19,2012.xlsx”Content-Length:20569
  • Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    输出的action方法:
[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$]'')  ...

提前感谢任何帮助。

noj0wjuj

noj0wjuj1#

您需要在Excel文件中添加数字签名。如何从代码中做到这一点是另一个问题。
更多信息:
http://www.delphifaq.com/faq/windows_user/f2751.shtml

vaj7vani

vaj7vani2#

这对我很有效--将文件保存为.xls,而不是. xlsx。Excel仍然会打开它,它不会显示错误。

相关问题