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.这个问题简化一下就是内存数据到文件,也就是遍历赋值,只不 ...
随机推荐
- laravel Hash密码 校对
laravel加密 是使用hash不可逆的,但是可以对加密后的密码进行校对 $data = $r->all();$id = $data['id'];$user_password = bcrypt ...
- VS2015 安装包
http://download.microsoft.com/download/D/C/9/DC99C86F-5E93-4F77-AF7A-05AAC9BD8B72/vs2015.1.ent_chs.i ...
- (转)html中使用表单和input file上传图片
本文转载自:http://hi.baidu.com/love_1210/item/120e452b42b2a854c38d59eb 客户端代码: <form name="form1&q ...
- mysql5.6.23安装 步骤
1. 准备好配置文件 my.cnf 2.建立my.cnf中用到的必要的目录 3.在mysql目录下有个scripts/mysql_install_db, 执行: scripts/mysql_insta ...
- [转]MVC 经验总结_序
<appSettings> <add key="vs:EnableBrowserLink" value="false"/> </a ...
- mysql-1安装和数据库的管理
1.安装 直接docker安装,客户端使用Navicat Premium. docker run -d --name csjmysql -p 3306:3306 -e MYSQL_ROOT_PASSW ...
- mysql-5.6.20主从同步错误之Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND
mysql-5.6.20主从同步错误之Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND 方法一: 1.Error_code: 1032; ha ...
- Back to CNBLOG
突然发现自己很久都没有写过博客了,感觉有点愧对程序员这个称号... 任重道远,要做的东西很多,越来发现,坚持是最难的,例如写博客. 但起码有有个开始,要有个开始去分享自己的经历,去让别人也知道,你是怎 ...
- [Delphi] 调用ocx
function RegisterDllServer(FileName: string): boolean; var nDllAddr: integer; bstr: string; ProcAddr ...
- CentOS6系统优化
[root@xuliangwei ~]# cat /etc/redhat-release //系统环境CentOS6.6 CentOS release 6.6 (Final) [root@xulian ...