输入Excel XML(ASP.NET 3.5)

我使用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类型(但是哪一种?)。


编辑:我在这里发现了一个错误描述

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


像这样使用

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文件格式MIME类型

编辑:

如果内容不是本机Excel文件格式,而是基于文本的格式(如CSV,TXT,XML),则网站可以将以下HTTP标头添加到它们的GET响应中,以告诉IE使用备用名称,并在名称中可以将扩展名设置为正确的内容类型:

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

有关更多详情,请参阅此链接


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

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

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

要么

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

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

编辑 - 根据评论:

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


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

Response.ContentType = "text/xml";

不要指定内容处置。

这个技术对Handler非常有用,而不是WebForm。

链接地址: http://www.djcxy.com/p/8203.html

上一篇: Type for Excel XML (ASP.NET 3.5)

下一篇: How to use the CSV MIME