MVC下用C#实现Excel导出

Aspx页面脚本:

function exportxls() {

            window.open("/Common/HomeExport?startdate=" + $("#hidStartTime").val(), "exportxls", null);

        }



C#代码如下:

   public class CommonController

    {

        public void HomeExport()

        {

            StringBuilder sHtml = new StringBuilder(string.Empty);

            //下面这句解决中文乱码

            sHtml.Append("<meta http-equiv=content-type content=application/ms-excel; charset=utf-8/>");

            ……

            //打印表头

            sHtml.Append("<table border=1 width=100%>");

            //打印列名

            sHtml.Append("<tr height=20 align=centerstyle='background-color:yellow'><td>No. </td><td>Project</td><td>Content</td>tr>");

            //循环读取List集合

            ……

            //打印表尾

            sHtml.Append("</table>");

            string filename = "Report";

            //调用输出Excel表的方法

            ExportToExcel("application/ms-excel", filename + ".xls", sHtml.ToString());

        }

 

        public void ExportToExcel(string FileType, string FileName, string ExcelContent)

        {

            System.Web.HttpContext.Current.Response.Charset = "UTF-8";

            System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());

            System.Web.HttpContext.Current.Response.ContentType = FileType;

            System.IO.StringWriter tw = new System.IO.StringWriter();

            System.Web.HttpContext.Current.Response.Output.Write(ExcelContent.ToString());

            System.Web.HttpContext.Current.Response.Flush();

            System.Web.HttpContext.Current.Response.End();

        }

    }

 

 

posted @ 2013-12-27 11:20  linyujade  阅读(2919)  评论(0编辑  收藏  举报