默认情况下在Excel中打开电子表格XML文件

10
在一个 web 应用程序中,我正在使用从 Excel 2010 创建的 XSL 模板生成电子表格 XML。我希望这个电子表格 XML 默认在 Excel 中打开。因此,我向响应添加以下属性:
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "Attachment;Filename=export.xls");
Response.Charset = "";

使用此方法可以在Excel中打开文件,但由于Excel 2010的扩展硬化功能,会显示提示:

您要打开的文件'export[1].xls'与文件扩展名指定的格式不同。在打开文件之前,请验证该文件未损坏并来自可信源。是否立即打开文件?

如果我点击“是”,它就可以正常打开了。但是,有没有办法完全跳过这个提示呢?我已经阅读了关于更改注册表以禁用用户计算机中的提示的解决方案。但是,这是一个公共网站,这种解决方案将无法使用。

我可以将附件文件名设置为export.xml。如果我保存并在Excel中打开它,则没有提示。但默认情况下,XML无法在Excel中打开。

有什么想法可以在没有提示的情况下在Excel中打开电子表格XML吗?


如果您指定“xlsx”类型,是否会有任何更改? - Mike Woodhouse
@Mike:更糟糕的是,Excel接下来不会提供打开选项。它只会显示一个提示,文件扩展名无效,只有一个“确定”按钮。也许值得一提的是,我将XSL模板保存为“XML电子表格2003”类型。 - itsbalur
xlsx不是压缩的xml吗?你试过压缩你的结果吗? - pintxo
@cmmi xlsx 实际上是一个压缩的目录结构,包含各种文件夹和文件,其中每个工作表都有一个 XML 文件。 - Mike Woodhouse
1个回答

7

这篇博客帮助我解决了问题。

https://ralph.blog.imixs.com/2013/02/16/how-to-generate-a-excel-sheet-with-xslt/

关键是按照上述帖子中提到的方式在你的XSL模板中添加此处理指令

<xsl:processing-instruction name="mso-application">   
<xsl:text>progid="Excel.Sheet"</xsl:text>  
</xsl:processing-instruction>

通过这样做,您可以将文件扩展名指定为.xml,但默认情况下它会在Excel中打开。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接