MVC 3 Excel文件下载

一、准备工作

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

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

三、开始写代码……

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

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

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

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

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

@Html.ActionLink("下载", "Down");

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

posted @ 2011-11-03 14:24  杨门子禅  阅读(686)  评论(0编辑  收藏  举报