一、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. Nacos 服务状态监听四种写发

    监听服务的四种实现方式,以监听 Nacos 服务为例 1. 传统方式 public void subscribe() { try { NamingService namingService = Nam ...

  2. 微服务网关 —— SpringCloud Gateway

    Gateway 简介 Spring Cloud Gateway 基于 Spring 5.Spring Boot 2 和 Project Reactor 等技术,是在 Spring 生态系统之上构建的 ...

  3. Hugging News #0918: Hub 加入分类整理功能、科普文本生成中的流式传输

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  4. sed 流编辑器

    一.简介 非交互式的处理 一行一行的读入处理 占用系统空间少 大文件一般用sed节省内存 语法:语法 sed [选项] '行的定位 动作' 文件... 参数 说明 -e 允许进行多项编辑 -n 静默输 ...

  5. L1-048 矩阵A乘以B (15分)

    给定两个矩阵A和B,要求你计算它们的乘积矩阵 \(AB\).需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有 \(R_a\) 行.\(C_a\) 列,B有 \(R_b\) 行.\(C_b\) 列, ...

  6. 五分钟,手撸一个简单的Spring容器

    工厂和Spring容器Spring是一个成熟的框架,为了满足扩展性.实现各种功能,所以它的实现如同枝节交错的大树一样,现在让我们把视线从Spring本身移开,来看看一个萌芽版的Spring容器怎么实现 ...

  7. S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

    上一节S3C2440移植linux3.4.2内核之内核框架介绍及简单修改我们简单配置了内核,这节来根据继续修改内核. 启动内核   内核启动的打印信息如下图所示   可以看到内核有8个分区,而我们的u ...

  8. springboot2.0+dubbo-spring-boot-starter聚合项目打可执行的jar包

    springboot2.0+dubbo聚合项目打可执行的jar包 springboot2.0+dubbo-spring-boot-starter项目服务方打包和以前老版本的dubbo打包方式不一样,不 ...

  9. 这才是你应该了解的Redis数据结构!

    深入了解Redis数据结构 Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表.在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的 ...

  10. Canvas实现画布的缩放

    主要介绍三种方式: 首先创建一个index.html文件 <!DOCTYPE html> <html lang="en"> <head> < ...