Asp.Net MVC中点击按钮导出Excel
一、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的更多相关文章
- ASP.Net MVC中数据库数据导出Excel,供HTTP下载(转)
转自http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于web ...
- ASP.Net MVC中数据库数据导出Excel,供HTTP下载
本文来自:http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于 ...
- 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类
/// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...
- ASP.Net MVC利用NPOI导入导出Excel
因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...
- asp.net mvc 中使用NPOI导出excel
版本信息:NPOI1.2.5(2.0以上的版本很多方法不清楚) 明确三点: path: mvc 部署网站的时候,我们肯定要拷贝的一个文件夹就mvc的UI层,有点可以肯定的是,你部署网站的路径不一定都是 ...
- asp.net mvc 使用NPOI插件导出excel
/// <summary> /// 交易账单 导出交易列表 /// </summary> /// <returns></returns> public ...
- ASP.net MVC把Html Table导出Excel
[HttpPost] public ActionResult ExportExcel(FormCollection form) { string strHtml = form["hHtml& ...
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- .net mvc利用NPOI导入导出excel
1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...
- 【asp.net】将GridView数据导出Excel
概要: 中午睡了一会,醒来的时候看到老师叫我去办公室,需求是这样的,把excel表中的每个同学,判断图片目录中是否有对应的照片(图片的名字用的学号或身份证号码) 没有对应图片的学生记录,存入自己的数据 ...
随机推荐
- PPT 年终总结PPT 应该怎么样改
- python版本升级到3.8以及安装虚拟环境
linux系统升级python版本看起来复杂,如果知道其中步骤也不会觉得很困难.下面记录在deepin系统 15.11和ubuntu16.04系统下将python从2.7升级到3.8过程 升级pyth ...
- xv6book阅读 chapter2
一个操作系统至少应该满足三个需求:多路复用.隔离.交互.本章主要介绍如何组织操作系统来实现以上的三个需求,本文关注的是一种围绕单核进行设计的方法,这种设计是被许多uinx操作系统所使用的.Xv6运行在 ...
- javascript yield
代码: function delay(time) { return new Promise(function (resolve, reject) { setTimeout(() => { res ...
- 【QT Tools】软件多语言国际化翻译的方法与步骤
在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们通常在写程序 ...
- Codeforces Round #623 (Div. 2) A~D题,D题multiset使用
比赛链接:Here 1315A. Dead Pixel 签到题, 比较四个值 max(max(x, a - 1 - x) * b, a * max(y, b - 1 - y)) 1315B. Home ...
- Codeforces Round #728 (Div. 2) A~C 补题记录
比赛链接:Here 1541A. Pretty Permutations 给定 \(1,2,3,4,...n\) 序列,让每一个数字都不处于原来的位置,但总的移动距离要最小 \(n\) 为偶数的情况 ...
- L1-046 整除光棍 (20分)
问题描述 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可 ...
- iview upload 上传文件样例
iview upload 组件官网上给出的用法是,选择附件后就立马上传附件.我不想让他立马上传,我想让他和其他一些信息一起上传,百度查了一些资料照大神总结的例子实现了现在分享一下. <Uploa ...
- 【驱动】SPI驱动分析(七)-SPI驱动常用调试方法
用户态 用户应用层使用spidev驱动的步骤如下: 打开SPI设备文件:用户可以通过打开/dev/spidevX.Y文件来访问SPI设备,其中X是SPI控制器的编号,Y是SPI设备的编号. 配置SPI ...