Response.ContentType application/vnd.ms-excel xls 停止工作

Response.ContentType application/vnd.ms-excel xls stopped working

我在这个问题上做了一些相当深入的搜索,但没有成功。在过去的几天里,从 HTML 到 XLS 的输出似乎已停止在我支持的许多遗留(阅读:经典 ASP)系统上工作。我已经能够在多台服务器上重现它,从 Office 2010 到 Office 2016 的多个独立源代码。我已经查看了我能想到的所有内容但没有成功,所以我很想知道是否有我可能忽略的东西。我开始认为罪魁祸首可能是错误的 Office 更新。

有效且已使用多年的示例:

<%

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename=TestExcel.xls"

%>

<html>
    <body>
        <table>
            <thead>
                <tr>
                    <th>column 1 header</th>
                    <th>column 2 header</th>
                </tr>
            </thead>

            <tbody>
                <tr>
                    <td>column 1 value</td>
                    <td>column 2 value</td>
                </tr>
            </tbody>

            <tfoot>
                <tr>
                    <td>Footer 1</td>
                    <td>Footer 2</td>

                </tr>

            </tfoot>
        </table>
    </body>
</html>

奇怪的是,XLS 文件实际上已创建,但当它打开时 Excel 打开但文件不存在。

更奇怪的是,当您使用某些文本编辑器(例如记事本)打开 XLS 文件时,只需“文件”->“另存为”即可毫无问题地打开。

此问题与 2016 年 7 月 12 日发布的 Excel 的 Microsoft 安全更新 KB3115262 有关。可在 Microsoft 安全公告 MS16-088 - 严重中找到安全更新信息。

我找到了三种解决方法(按照我的偏好顺序):

  • 不要单击“打开”,而是保存文件然后打开它
  • 在 Excel 信任中心 > 信任中心设置 > 受保护的视图中,取消选中顶部的两个选项。这可能不安全。
  • 卸载安全更新。

下面是有关此问题的几个链接,供您进一步阅读。 https://social.technet.microsoft.com/Forums/en-US/d2d84793-9920-45e3-baef-5027a4ac1ae0/kb3170008-for-office-2016-breaks-functionality-ms16088?forum=officeitpro

https://technet.microsoft.com/library/security/MS16-088

https://salesforce.stackexchange.com/questions/131404/end-user-cannot-open-a-xls-report-exported-from-salesforce

您也可以转到文件的属性并单击取消阻止。

我认为比更改 Excel 信任中心

更安全

对于 Windows 10 位用户,将 Excel 下载站点 URL 添加到 Windows 10 Internet 选项 > 安全 > 可信站点 > 站点中的受信任站点列表然后通过您的 MS Edge 浏览器下载并打开 Excel 工作簿。