Excel XML的MIME类型(ASP.NET 3.5)

时间:2011-11-17 11:17:42

标签: c# asp.net excel mime-types

我使用CarlosAG-Dll为我创建一个XML-Excel文件(在MemoryStream中)。

Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("content-disposition", "myfile.xml");
memory.WriteTo(Response.OutputStream);

我的问题是,我在客户端获得了myfile.xls(IE)或myfile.xml.xls(FF),因此从excel获得了恼人的安全警告。

我也尝试使用application / vnd.openxmlformats-officedocument.spreadsheetml.sheet(xlsx),但它甚至都不会打开。

所以我需要剪切.xml并将其作为vnd.ms-excel发送(如何?)或者采用另一种MIME类型(但是哪一种?)。

<小时/> 编辑:我发现了错误说明here

我想知道这是否仍然开放,为什么?

3 个答案:

答案 0 :(得分:7)

像这样使用

Response.ContentType = "application/vnd.ms-excel";

Response.AppendHeader("content-disposition", "attachment; filename=myfile.xls");

对于Excel 2007及更高版本,MIME类型不同

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

Response.AppendHeader("content-disposition", "attachment; filename=myfile.xlsx");

查看MIME类型列表

Office 2007 File Format MIME Types

修改

  

如果内容不是本机Excel文件格式,而是一个   基于文本的格式(如CSV,TXT,XML),然后网站就可以添加   以下HTTP头向其GET响应告诉IE使用   备用名称,您可以在名称中将扩展名设置为右侧   内容类型:

Response.AddHeader "Content-Disposition", "Attachment;Filename=myfile.csv"

有关详细信息,请参阅 this link

答案 1 :(得分:0)

安全警告与MIME类型无关 - 它是客户端安全设置,您无法从服务器端禁用!

另一点 - 将Response.AppendHeader("content-disposition", "myfile.xml");更改为:

Response.AppendHeader("content-disposition", "attachment; filename=myfile.xlsx");

OR

Response.AppendHeader("content-disposition", "inline; filename=myfile.xlsx");

有关参考,请参阅http://www.ietf.org/rfc/rfc2183.txt

编辑 - 根据评论:

如果格式不是XLSX(Excel 2007及更高版本),请在上面的代码中使用myfile.xls

答案 2 :(得分:0)

如果您的文档是Excel Xml 2003文档,则应使用text / xml内容类型。

Response.ContentType = "text/xml";

不要指定内容处理。

这种技术适用于Handler,而不适用于WebForm。