一、Excel导出帮助类,要安装包NPOI

 1 using NPOI.HSSF.UserModel;
2 using NPOI.SS.UserModel;
3 using System;
4 using System.Collections.Generic;
5 using System.Data;
6 using System.IO;
7
8 namespace JMB.Common.LogicTools
9 {
10 /// <summary>
11 /// Excel导入导出组件
12 /// </summary>
13 public static class ExportHelper
14 {
15 /// <summary>
16 /// 导出数据到Excel
17 /// </summary>
18 /// <param name="SourceTable"></param>
19 /// <returns></returns>
20 public static Stream RenderDataTableToExcel(DataTable SourceTable)
21 {
22 HSSFWorkbook workbook = new HSSFWorkbook();
23 MemoryStream ms = new MemoryStream();
24 HSSFSheet sheet = workbook.CreateSheet() as HSSFSheet;
25 HSSFRow headerRow = sheet.CreateRow(0) as HSSFRow;
26
27 // handling header.
28 foreach (DataColumn column in SourceTable.Columns)
29 headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
30
31 // handling value.
32 int rowIndex = 1;
33
34 foreach (DataRow row in SourceTable.Rows)
35 {
36 HSSFRow dataRow = sheet.CreateRow(rowIndex) as HSSFRow;
37
38 foreach (DataColumn column in SourceTable.Columns)
39 {
40 dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
41 }
42
43 rowIndex++;
44 }
45
46 workbook.Write(ms);
47 ms.Flush();
48 ms.Position = 0;
49
50 sheet = null;
51 headerRow = null;
52 workbook = null;
53
54 return ms;
55 }
56 }
57 }

二、写一个把List集合转成DataTable的帮助类

 1 public class User
2 {
3 /// <summary>
4 /// 用户名
5 /// </summary>
6 public string UserName { get; set; }
7 /// <summary>
8 /// 邮箱
9 /// </summary>
10 public string Email { get; set; }
11 /// <summary>
12 /// 密码
13 /// </summary>
14 public string PassWord { get; set; }
15 }
16 public static class ListToDataTable
17 {
18 public static DataTable GetDataTable(List<User> list)
19 {
20 DataTable dt = new DataTable();
21 dt.Columns.Add("列1名称", typeof(string));//用户名
22 dt.Columns.Add("列2名称", typeof(string));//密码
23 dt.Columns.Add("列3名称", typeof(string));//邮箱
24 //加载明细
25 dt.Clear();
26 #region 加载数据
27 foreach (var item in list)
28 {
29 DataRow dr = dt.NewRow();
30 dr[0] = item.UserName;
31 dr[1] = item.PassWord;
32 dr[2] = item.Email;
33 dt.Rows.Add(dr);
34 }
35
36 #endregion
37 return dt;
38 }
39
40 }

三、在页面上点击导出Excel的按钮 控制器类中的某个Action

 1   [HttpGet]
2 public ActionResult List()
3 {
4 return View();
5 }
6
7 [HttpPost]
8 public ActionResult List(FormCollection Form)
9 {
10 string datatoexcel = Form["getexcel"].ToString();
11 if (datatoexcel == "a1")
12 {
13 List<User> list = new List<User>();
14 list.Add(new User { UserName = "张三", Email = "1s45@qq.com", PassWord = "123" });
15 list.Add(new User { UserName = "李四", Email = "14s5@qq.com", PassWord = "587" });
16 list.Add(new User { UserName = "王五", Email = "1s45@qq.com", PassWord = "12s" });
17 list.Add(new User { UserName = "麻子", Email = "145@qq.com", PassWord = "ss" });
18 DataTable dt = ListToDataTable.GetDataTable(list);
19
20 using (MemoryStream ms = ExportHelper.RenderDataTableToExcel(dt) as MemoryStream)
21 {
22 /*输出文件流,浏览器自动提示下载*/
23 string filename = "你要取的文件名" + ".xls";
24 Response.AddHeader("Content-Disposition", string.Format("attachment; filename=" + filename));
25 Response.BinaryWrite(ms.ToArray());
26 }
27 }
28 return View();
29 }

四、前端页面示意

 1 <html>
2 <script src="~/Content/js/jquery-1.11.1.js"></script>
3 <script type="text/javascript">
4 //导出数据到excel
5 function doGetExcel() {
6
7 var getexcelinput = document.createElement("input");
8 getexcelinput.type = "hidden";
9 getexcelinput.name = "getexcel";
10 getexcelinput.value = "1";
11 var form = document.getElementById('pageform');
12 form.appendChild(getexcelinput);
13 form.submit();
14 form.removeChild(getexcelinput);
15 }
16 </script>
17
18 <body>
19 <div class="session">
20 <div class="wrap-shadow">
21 <div class="session-content-padding">
22 <form id="pageform" method="post" action="/Action/List">
23 <div class="info-bar">
24 <div class="info-bar-btn-group">
25 <a class="info-bar-btn" onclick="doGetExcel();">导出Excel文件</a>
26 </div>
27 <div class="info-bar-content">
28 </div>
29 </div>
30
31
32 </form>
33 </div>
34 </div>
35 </div>
36
37 </body>
38 </html>
39

Asp.Net MVC中点击按钮导出Excel的更多相关文章

  1. ASP.Net MVC中数据库数据导出Excel,供HTTP下载(转)

    转自http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于web ...

  2. ASP.Net MVC中数据库数据导出Excel,供HTTP下载

    本文来自:http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于 ...

  3. 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类

    /// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...

  4. ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...

  5. asp.net mvc 中使用NPOI导出excel

    版本信息:NPOI1.2.5(2.0以上的版本很多方法不清楚) 明确三点: path: mvc 部署网站的时候,我们肯定要拷贝的一个文件夹就mvc的UI层,有点可以肯定的是,你部署网站的路径不一定都是 ...

  6. asp.net mvc 使用NPOI插件导出excel

    /// <summary> /// 交易账单 导出交易列表 /// </summary> /// <returns></returns> public ...

  7. ASP.net MVC把Html Table导出Excel

    [HttpPost] public ActionResult ExportExcel(FormCollection form) { string strHtml = form["hHtml& ...

  8. 1.ASP.NET MVC使用EPPlus,导出数据到Excel中

    好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...

  9. .net mvc利用NPOI导入导出excel

    1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  10. 【asp.net】将GridView数据导出Excel

    概要: 中午睡了一会,醒来的时候看到老师叫我去办公室,需求是这样的,把excel表中的每个同学,判断图片目录中是否有对应的照片(图片的名字用的学号或身份证号码) 没有对应图片的学生记录,存入自己的数据 ...

随机推荐

  1. PPT 商务PPT怎么做

    商务报告:公司专属PPT模板怎么做? 通过LOGO 提取主色调 搜集相关元素 通过LOGO 提取主色调 搜集相关元素 下载图片使用 建立版面

  2. 声明式调用 —— SpringCloud OpenFeign

    Feign 简介 Spring Cloud Feign 是一个 HTTP 请求调用的轻量级框架,可以以 Java 接口注解的方式调用 HTTP 请求,而不用通过封装 HTTP 请求报文的方式直接调用 ...

  3. Java 网络编程 —— 异步通道和异步运算结果

    从 JDK7 开始,引入了表示异步通道的 AsynchronousSockerChannel 类和 AsynchronousServerSocketChannel 类,这两个类的作用与 SocketC ...

  4. Hadoop面试题总结(二)——HDFS

    1. HDFS 中的 block 默认保存几份? 默认保存3份 2.HDFS 默认 BlockSize 是多大? 默认64MB 3.负责HDFS数据存储的是哪一部分? DataNode负责数据存储 4 ...

  5. mit6.s081 lab1:Unix Utilities

    1 sleep(easy) 要求:为 xv6实现 UNIX 程序睡眠; 睡眠需要暂停一段用户指定的时间.刻度是由 xv6内核定义的时间概念,即定时器芯片两次中断之间的时间.解决的程序应该在 user/ ...

  6. U64949 棋盘覆盖(二分图)| 二分图匹配总结

    https://ac.nowcoder.com/acm/contest/1062/B [题目] 给出一张n×n(n≤100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖 ...

  7. 记一次 .NET某道闸收费系统 内存溢出分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析. 二:Win ...

  8. 人人都是 Serverless 架构师 | “盲盒抽奖”创意营销活动实践

    作者 | 寒斜 & 江昱 当 Serverless 与低代码这两个不同的技术共同相交于同一个业务时会有怎样的价值展现?本文以 "盲盒抽奖" 这个 Serverless De ...

  9. SpringBoot发布https服务

    一.生成SSL证书 1.进入本地jdk的路径 cd D:\Program\jdk1.8.0_77\jre\lib\security cmd窗口生成证书HSoftTiger.keystore到D盘 ke ...

  10. vue 引入echars 亲测版

    网上找了很多例子,其中有修改main.js的配置的,反正我没搞成功,最后实验成功的步骤如下 1.首先创建一个Vue CLI 的工程 . 注:具体步骤查看以前的博客 https://www.cnblog ...