Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel XML的MIME类型(ASP.NET 3.5)_C#_Asp.net_Excel_Mime Types - Fatal编程技术网

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

C# Excel XML的MIME类型(ASP.NET 3.5),c#,asp.net,excel,mime-types,C#,Asp.net,Excel,Mime Types,我使用CarlosAG Dll为我创建一个XML Excel文件(在内存流中) 我这里的问题是,我在客户端得到一个myfile.xls(IE)或一个myfile.xml.xls(FF),因此从excel得到一个恼人的安全警告 我在application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(xlsx)上也试过了,但它甚至无法打开 因此,我需要剪切.xml并将其作为vnd.ms-excel(如何?)发送,或者采用另一种MIME类

我使用CarlosAG Dll为我创建一个XML Excel文件(在内存流中)

我这里的问题是,我在客户端得到一个myfile.xls(IE)或一个myfile.xml.xls(FF),因此从excel得到一个恼人的安全警告

我在application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(xlsx)上也试过了,但它甚至无法打开

因此,我需要剪切.xml并将其作为vnd.ms-excel(如何?)发送,或者采用另一种MIME类型(但哪种类型?)。
编辑:我发现了一个bug描述


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

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

另一点-更改
Response.AppendHeader(“contentdisposition”,“myfile.xml”)至:

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

有关参考信息,请参见

编辑-根据评论:

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

如下所示

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类型列表

编辑:

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

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

有关详细信息,请参见

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

Response.ContentType = "text/xml";
不要指定内容配置


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

如果我没有弄错的话,生成的文件格式不是Excel 2007,而是Excel 2003引入的XML格式。因此,文件扩展名.xlsx不正确,Excel甚至可能无法使用该文件扩展名打开它。@Codo Thank-IIRC您所指的格式是Excel 2000引入的-相应地编辑了答案…我也尝试将.xls作为扩展名,但随后我得到了相同的错误(我尝试打开.xls,但此扩展名与内容不同)[这是xml]@Codo:Yep,这是我在第一篇文章中写的(至少我试过;-))我确实知道这些MIME类型,但它们都不符合我的要求(扩展名为.xml的excel xml文件)。请查看答案的编辑部分,这是解决您问题的方法。我添加了“附件”在我的测试中,现在我的客户机希望在单击“打开”后用我的标准xml应用程序打开它(在其他地方可能没有)。它在Excel中打开(但仅在IE中打开)。如果我在FF中打开它,它仍然会转换为.xml。xls@UNeverNo请参见链接的最后一部分:"如果文件的MIME类型不正确,用户可能会看到第二个提示,因此必须再次按“否”以取消第二次打开尝试。此问题仅在将IE用于web浏览器时发生。此问题仍在调查中,但考虑到代码的复杂性和fac的性质,在Office 14之前不可能修复此问题t Excel不想在没有充分了解对其他浏览器用户的后果的情况下降低安全措施来解决IE开放行为。”:)谢谢你的帮助,我想我现在要接受警告消息。。。
Response.AddHeader "Content-Disposition", "Attachment;Filename=myfile.csv"
Response.ContentType = "text/xml";