MIME类型并导出到不同的应用程序(excel,word,pdf ...等)

时间:2010-09-15 05:53:27

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

当我写一个像m application/vnd.ms-excel这样的mime类型的文件时,我想知道场景背后到底发生了什么?{/ 1>

我的意思是我像这样导出excel:

  gridView.Page.Response.Clear();

        gridView.Page.Response.Buffer = true;



        gridView.Page.Response.AddHeader("content-disposition",

        "attachment;filename=GridViewExport.xls");

        gridView.Page.Response.Charset = "";

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




        StringWriter sw = new StringWriter();

        HtmlTextWriter hw = new HtmlTextWriter(sw);



        gridView.AllowPaging = false;
        gridView.AllowSorting = false;
        gridView.DataBind();
        gridView.RenderControl(hw);




        //style to format numbers to string

        string style = @"<style> .textmode { mso-number-format:\@; } </style>";

        gridView.Page.Response.Write(style);

        gridView.Page.Response.Output.Write(sw.ToString());

        gridView.Page.Response.Flush();

        gridView.Page.Response.End();

我知道excel文件有特定的格式。所以我想知道它是如何在幕后完成的? 我想到的是它只是生成HTML并将其粘贴到EXCEL中,而不是真正导出为EXCEL格式?

如果我错了,任何人都可以纠正我吗?还是告诉我幕后真的发生了什么?

1 个答案:

答案 0 :(得分:1)

没有什么神奇的事情发生 - 你确实只是在生成HTML; MIME类型仅用于指示哪个应用程序应该处理数据。操作系统和浏览器在前面协同工作,因此当浏览器看到具有该MIME类型的响应时,它会为您打开Excel。

如果您没有按照任何链接生成此请求,而是执行了右键单击“另存为”,您最终只能在文件中使用HTML。它不像ASP.NET在幕后将其转换为Excel的原生格式。

一般情况下,如果您有兴趣了解这样的情况,您可能需要运行Fiddler(诊断代理)或Wireshark(网络嗅探器) - 两者都可以让你看到浏览器和服务器之间正在交换的数据。