MVC 3 Excel文件下载(转http://www.cnblogs.com/smartsky/archive/2011/11/03/2234502.html)

Coordinator
Dec 12, 2011 at 9:10 AM

一、准备工作

下载MyXls 下载地址为:http://sourceforge.net/projects/myxls/

二、将下载的DLL添加到项目引用中。

三、开始写代码……

1.在Controllers里面相应的Controllers添加一个Action。

/// <summary>
<!--CRLF-->
/// 下载Action
<!--CRLF-->
/// </summary>
<!--CRLF-->
/// <returns></returns>
<!--CRLF-->
/// 创建人:JackYang
<!--CRLF-->
/// 2011/11/3
<!--CRLF-->
public ActionResult Down()
<!--CRLF-->
{ 
<!--CRLF-->
     XlsDocument xls = new XlsDocument();
<!--CRLF-->
 
<!--CRLF-->
    Worksheet sheet = xls.Workbook.Worksheets.Add("下载内容");
<!--CRLF-->
 
<!--CRLF-->
    ColumnInfo colInfo = new ColumnInfo(xls, sheet);
<!--CRLF-->
 
<!--CRLF-->
    //将拼写好的Excel,转化成byte[]
<!--CRLF-->
    return File(DownLoadHelper(xls,sheet,"下载内容"), "application/vnd.ms-excel");
<!--CRLF-->
}
<!--CRLF-->

2.添加一个Excel进行二进制的转换的私有方法

/// <summary>
<!--CRLF-->
/// 将拼写好的Excel,转化成byte[]
<!--CRLF-->
/// </summary>
<!--CRLF-->
/// <param name="xls">XLS.</param>
<!--CRLF-->
/// <param name="sheet">sheet.</param>
<!--CRLF-->
/// <param name="xlsName">下载时文件名称</param>
<!--CRLF-->
/// <returns></returns>
<!--CRLF-->
/// 创建人:JackYang
<!--CRLF-->
/// 2011/11/3
<!--CRLF-->
private byte[] DownLoadHelper(XlsDocument xls, Worksheet sheet, string xlsName)
<!--CRLF-->
{
<!--CRLF-->
    using (MemoryStream ms = new MemoryStream())
<!--CRLF-->
    {
<!--CRLF-->
        xls.Save(ms);
<!--CRLF-->
        ms.Flush();
<!--CRLF-->
        ms.Position = 0;
<!--CRLF-->
        sheet = null;
<!--CRLF-->
        xls = null;
<!--CRLF-->
        HttpResponse response = System.Web.HttpContext.Current.Response;
<!--CRLF-->
        response.Clear();
<!--CRLF-->
        response.Charset = "UTF-8";
<!--CRLF-->
        response.ContentType = "application/vnd.ms-excel";
<!--CRLF-->
        System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=" + HttpUtility.UrlEncode(xlsName)));
<!--CRLF-->
        byte[] data = ms.ToArray();
<!--CRLF-->
        return data;
<!--CRLF-->
    }
<!--CRLF-->
}
<!--CRLF-->

3.在前台页面,添加一个超链接,来调用这个Action。

@Html.ActionLink("下载", "Down");
<!--CRLF-->

四、OK了,点下,就可以下载到传说中正统的Excel文件了。