打开电子表格xml,默认保存为Excel

时间:2013-08-23 19:36:30

标签: xml excel http xslt

在Web应用程序中,我使用XSL模板生成电子表格XML。我希望此电子表格XML默认在Excel中打开。因此,我将以下属性添加到响应中:

Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "Attachment;Filename=export.xls");
Response.Charset = "";

然而,这有两个问题,首先我得到以下信息:

The file you are trying to open, 'Response.xls', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

第二,当我尝试保存它时,它会尝试默认保存为.xml文件。我希望这个默认保存为Excel文件,任何人都知道这样做的方法吗?

2 个答案:

答案 0 :(得分:0)

Excel XLS文件与Open Spreadsheet XML文件的格式不同,这就是Excel在尝试打开XLS并发现它不是一个XLS时嘲笑你的原因。当然,Excel可以打开Open Spreadsheet XML文件,这也是它在Excel中打开它的原因。但它是一个XML文件,所以当你再次保存它时,它仍然是一个XML文件。我认为解决此问题的唯一方法是执行另存为,并手动将格式更改为.XLS。

对于第一个问题,可能有一些事情你可以做。将文件重命名为Export.xml,但请确保XML文件顶部显示以下处理说明

<?mso-application progid="Excel.Sheet"?>

这应该有希望在Excel中打开XML文件,而不是Internet Explorer。

就XSLT而言,要输出这样的处理指令,您需要在输出任何元素之前将此代码添加到XSLT样式表中

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

答案 1 :(得分:-1)

这里很晚,但如果有人遇到这个问题,请问我是如何解决的。

如果扩展程序不是那么重要并且您正在使用XSLT,那么您可以执行Tim C为XSLT文件所解释的内容并添加以下内容

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

然后在您的代码中,您将扩展.xml而不是.xls

Response.AddHeader("Content-Disposition", "Attachment;Filename=export.xml");

这将导出扩展名为.xml的文件,但默认情况下,它将在MS Excel 2007中打开而没有任何错误,同时保留转换文件中存在的所有样式。

希望这有助于某人。