MVC简单Excel导出

搭个简单三层,如图

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;
        }
    }
时间: 2024-10-12 10:04:48

MVC简单Excel导出的相关文章

mvc简单execl导出

直接上代码: public static byte[] GetExecl(DataTable dt, List<string> list) { var sbHtml = new StringBuilder(); sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>"); sbHtml.Append("<tr>"); foreach (var item i

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

MVC把表格导出到Excel

有关Model: namespace MvcApplication1.Models { public class Coach { public int Id { get; set; } public string Name { get; set; } } } HomeController中,借助GridView控件把内容导出到Excel: using System.Collections.Generic; using System.IO; using System.Linq; using Sys

springMVC实现excel导出(简单封装版)

数据model,此model只存在getXXX和setXXX方法,不存在isXXX方法. /**  * Created by lgq on 2015/8/13.  */ public class Student {     private long id;     private String name;     private int age;     private boolean sex;     private Date birthday;     public long getId()

displaytag的Excel导出实践

本文转自 http://lingceng.iteye.com/blog/1820081/ Displaytag官网有1.0, 1.1, 1.2等,注意找到对应的版本.源码和API可以在Maven库中找到.   常规的使用不是问题,这里说说关于Excel导出的问题,中文乱码,使用POI等.我使用的是Displaytag1.1. 基本导出功能   这种情况只需引入displaytag-1.1.jar.   设置column属性media="html"将不会导出,media="ex

ExtJS实现Excel导出

1. 使用POI组件实现excel导出功能 //获取问题列表 List<Suggestion> targetStockList = suggestionService.getSuggestionList(map);           //创建一个新的Excel         HSSFWorkbook workBook = new HSSFWorkbook();         //创建sheet页         HSSFSheet sheet = workBook.createSheet

二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCa 前言:本章介绍除DotNetBar2控件套件之外的另外一些常用控件,包括Grid++Report报表.条形码.Excel导出.图表控件ZedGraph:类似这些控件网上免费开源的太少了,经过一番对比和使用感受最后决定把这几个控件整合到EFW框架中供大家选择使用: 本

java excel导出

1.  Excel导出的核心方法在ExportExcel类中,使用时请将该类完整的引入. 1 import java.io.IOException; 2 import java.io.OutputStream; 3 import java.lang.reflect.Field; 4 import java.lang.reflect.InvocationTargetException; 5 import java.lang.reflect.Method; 6 import java.text.Si

excel导出功能优化

先说说优化前,怎么做EXCEL导出功能的: 1. 先定义一个VO类,类中的字段按照EXCEL的顺序定义,并且该类只能用于EXCEL导出使用,不能随便修改. 2. 将查询到的结果集循环写入到这个VO类中. 3. 将这个VO类的数据集写入到EXCEL中. 缺点: 1.每次做一个功能的excel导出需要定义一个vo类,并且vo类不可随便变更. 2. 从数据库查询到结果集不能直接输出到excel,需要二次遍历写入到vo中. 3. excel导出的顺序必须与vo定义的字段顺序一致,并且输出vo中所有的字段