Npoi List DataTable导出一个Excel多个sheet 下载
参考:
http://blog.csdn.net/zhouqinghe24/article/details/8649346 参考下载
http://www.cnblogs.com/dyllove98/archive/2013/08/06/3241515.html 参考多个sheet
http://www.cnblogs.com/jicheng/p/5961257.html 参考列表写入
1、nuget搜索安装Npoi
2、代码
public class UserInfo
{
public string Name { get; set; }
public string Id { get; set; }
public string Phone { get; set; }
} /// <summary>
/// 生成excel文件到内存中
/// </summary>
/// <returns></returns>
public void CreateExcel()
{
MemoryStream ms = new MemoryStream(); List<UserInfo> listUser = new List<UserInfo>()
{
new UserInfo { Name="1", Id="1", Phone="1r" },
new UserInfo { Name="2", Id="2", Phone="2r" },
new UserInfo { Name="3", Id="3", Phone="3r" },
new UserInfo { Name="4", Id="4", Phone="4r" },
new UserInfo { Name="5", Id="5", Phone="5r" },
}; //创建工作簿对象
var workbook = new HSSFWorkbook(); #region DataTable数据
//创建工作表
ISheet sheet = workbook.CreateSheet("一个sheet");
IRow row0 = sheet.CreateRow(0);
row0.CreateCell(0).SetCellValue("用户Id");
row0.CreateCell(1).SetCellValue("用户名称");
row0.CreateCell(2).SetCellValue("用户备注信息"); var dtSource = GetDataTable();
for (int i = 0; i < dtSource.Rows.Count; i++)
{
row0 = sheet.CreateRow(i + 1);
for (int j = 0; j < dtSource.Columns.Count; j++)
{
row0.CreateCell(j).SetCellValue(dtSource.Rows[i][j].ToString());
}
} #endregion #region list数据
ISheet sheet2 = workbook.CreateSheet("另一个sheet");
IRow row2 = sheet2.CreateRow(0);
row2.CreateCell(0).SetCellValue("用户Id2");
row2.CreateCell(1).SetCellValue("用户名称2");
row2.CreateCell(2).SetCellValue("用户备注信息2"); for (int r = 1; r < listUser.Count; r++)
{
//创建行row
IRow row = sheet2.CreateRow(r);
row.CreateCell(0).SetCellValue(listUser[r].Id);
row.CreateCell(1).SetCellValue(listUser[r].Name);
row.CreateCell(2).SetCellValue(listUser[r].Phone);
} #endregion workbook.Write(ms); ms.Flush();
ms.Position = 0; var fileName = "测试Excel" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";//xls
DownloadExcel(ms, fileName); } /// <summary>
/// 生成http流下载文件
/// </summary>
/// <param name="ms"></param>
/// <param name="fileName"></param>
private static void DownloadExcel(MemoryStream ms, string fileName)
{
#region 处理IE、火狐等浏览器文件名乱码
if (System.Web.HttpContext.Current.Request.ServerVariables["http_user_agent"].IndexOf("Firefox", StringComparison.Ordinal) != -1)
{
fileName = "=?UTF-8?B?" + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(fileName)) + "?=";
}
else
{
fileName = System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);
fileName = fileName.Replace("+", "%20");
}
#endregion
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", ms.Length.ToString());
System.Web.HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary");
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream;charset=utf-8";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());
} /// <summary>
/// 模拟DataTable
/// </summary>
/// <returns></returns>
public DataTable GetDataTable()
{
DataTable tblDatas = new DataTable("Datas");
DataColumn dc = null; dc = tblDatas.Columns.Add("Name", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Id", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Phone", Type.GetType("System.String")); DataRow newRow;
newRow = tblDatas.NewRow();
newRow["Name"] = "大话西游";
newRow["Id"] = "2.0";
newRow["Phone"] = "我很喜欢";
tblDatas.Rows.Add(newRow); newRow = tblDatas.NewRow();
newRow["Name"] = "梦幻西游";
newRow["Id"] = "3.0";
newRow["Phone"] = "比大话更幼稚";
tblDatas.Rows.Add(newRow); return tblDatas;
}
Npoi List DataTable导出一个Excel多个sheet 下载的更多相关文章
- NPOI使用Datatable导出到Excel
首先要引用dll 下载地址:http://pan.baidu.com/s/1dFr2m 引入命名空间: using NPOI.HSSF.UserModel;using NPOI.SS.UserMode ...
- [转].net 使用NPOI或MyXls把DataTable导出到Excel
本文转自:http://www.cnblogs.com/yongfa365/archive/2010/05/10/NPOI-MyXls-DataTable-To-Excel-From-Excel.ht ...
- NPOI通过DataTable导出和读取Excel
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...
- DataTable导出到Excel
简单的导出到Excel中: 代码如下: using System; using System.Collections.Generic; using System.Data; using System. ...
- DataTable 导出到 Excel 类
底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...
- c# DataTable导出为excel
/// <summary> /// 将DataTable导出为Excel文件(.xls) /// </summary> /// <param name="dt& ...
- C# datatable 导出到Excel
datatable导出到Excel /// <summary> /// 将DataTable导出为Excel文件(.xls) /// </summary> /// <pa ...
- csv/json/list/datatable导出为excel的通用模块设计
导出excel的场景我一般都是一个List直接导出成一张sheet,用Npoi.Mapper库很方便,最近我经常是需要将接口返回的jsonarray转成一张excel表,比如从elasticsearc ...
- DataTable导出到Excel(.NET 4.0)
最近在论坛里又看到很多关于DataTable(DataSet)导入Excel的帖子,我也温故知新一下,用VS2010重新整理了一个Sample.这个问题简化一下就是内存数据到文件,也就是遍历赋值,只不 ...
随机推荐
- 华硕主板P8H61(P8H61-M_LX3_PLUS_R2.0)成功禁用USB口
公司大批这个型号的主板,在百度上搜索了一下,其中有一篇帖子说华硕客服说这个型号的USB控制XX是集成成南桥上面没法禁止. 经过研究发现官网上的0802版可以支持禁止usb,并且可以根据需要为每一个US ...
- Appcan、apicloud、HBuilder 不同之处解析
来源:http://www.mamicode.com/info-detail-1129829.html 现在Hybrid app是一中非常火热的开发模式,在国内对应的开发工具也乱象丛生,有WeX5.c ...
- Web服务的实质介绍
web应用的实质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用 ...
- Windows 程序 dump 崩溃调试
Windows 程序捕获崩溃异常 生成dump 概述 事情的起因是,有个同事开发的程序,交付的版本程序,会偶尔随机崩溃了. 悲催的是没有输出log,也没有输出dump文件. 我建议他给程序代码加个异常 ...
- Dirichlet Process
http://www.cnblogs.com/zhangbojiangfeng/p/5962039.html [各种函数推导]
- 克拉 & 24K
[克拉] 克拉(Ct)是宝石的质量(重量)单位,现定1克拉等于0.2克或200毫克.一克拉又分为100分,如50分即0.5克拉,以用作计算较为细小的宝石.因为宝石的密度基本上相同,因此越重的宝石体积越 ...
- ORM是什么?如何理解ORM?
一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使 ...
- IP地址工具类
/// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></returns> public st ...
- 深入理解Spring的容器内事件发布监听机制
目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监 ...
- acer笔记本禁用或关闭触摸板
acer笔记本禁用或关闭触摸板 如果启用或停用AspireOne的触摸板? 如果您希望启用或停用触摸板,请同时按下功能键(Fn)key和F7键.屏幕上会显示触摸板是否已启用或已禁用.