码迷,mamicode.com
首页 > Web开发 > 详细

MVC简单Excel导出

时间:2015-04-12 21:02:28      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

搭个简单三层,如图

技术分享

Model层代码,操作信息日志:

    public partial class SysLog
    {
        //序号ID
        public int LogID { get; set; }
        //登录类型
        public int LogType { get; set; }
        //用户名
        public string UserName { get; set; }
        //操作信息
        public string Operation { get; set; }
        //操作时间
        public string OperaTime { get; set; }
    }

Web层新建控制器DataListController,Index页显示表格信息,样式就直接用了自带的强类型视图吧

技术分享

导出Excel的A标签直接请求DataListController/ExcelExport,控制器内容:

public class DataListController : Controller
    {
        //
        // GET: /DataList/
        SysLogBll sysLogBll = new SysLogBll();
        public ActionResult Index()
        {
            ViewData.Model = sysLogBll.ShowDataList();
            return View();
        }
        public EmptyResult ExcelExport()
        {
            MemoryStream ms = new MemoryStream();
            ms = sysLogBll.ExcelExport();
            Response.Clear();
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("用户日志", System.Text.Encoding.UTF8) + DateTime.Now.ToString() + ".xls");
            Response.BinaryWrite(ms.GetBuffer());
            Response.End();
            return new EmptyResult();
        }
    }

命名为“用户日志”+当前时间,IE会将中文解析为乱码,因此UrlEncode一下。

BLL层引用DAL层方法,ShowDataList用于前台展示,ExcelExport用于表格导出

 public partial class SysLogBll
    {
        SysLogDal sysLogDal = new DAL.SysLogDal();
        public List<SysLog> ShowDataList()
        {
            return sysLogDal.ShowDataList();
        }

        public MemoryStream ExcelExport()
        {
            return sysLogDal.ExcelExport();
        }
    }

DAL层添加ExcelExport方法,返回流

 public partial class SysLogDal
    {
        string sql = "select * from SysLog";
        public List<SysLog> ShowDataList()
        {
            return SqlHelper.ExecuteDataList<SysLog>(sql);
        }
        public MemoryStream ExcelExport()
        {
            MemoryStream ms = new MemoryStream();
            IWorkbook book = new HSSFWorkbook();
            ISheet sheet = book.CreateSheet("系统日志");
            using (SqlDataReader reader = SqlHelper.ExecuteDataReader(sql))
            {
                IRow row = sheet.CreateRow(0);
                ICell cell = row.CreateCell(0);
                cell.SetCellValue("序号");
                cell = row.CreateCell(1);
                cell.SetCellValue("登录类型");
                cell = row.CreateCell(2);
                cell.SetCellValue("用户名");
                cell = row.CreateCell(3);
                cell.SetCellValue("操作信息");
                cell = row.CreateCell(4);
                cell.SetCellValue("操作时间");
                for (int i = 0; reader.Read(); i++)
                {
                    row = sheet.CreateRow(i + 1);
                    for (int j = 0; j < reader.FieldCount; j++)
                    {
                        cell = row.CreateCell(j);
                        cell.SetCellValue(reader[j].ToString());
                    }
                }
            }
            book.Write(ms);
            ms.Flush();
            ms.Position = 0;
            return ms;
        }
    }

MVC简单Excel导出

标签:

原文地址:http://www.cnblogs.com/greyblack/p/4420453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!