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.这个问题简化一下就是内存数据到文件,也就是遍历赋值,只不 ...
随机推荐
- thinkphp3.2.3+smarty解决success调用模板错误心得
最近学习thinkphp上瘾,出现success找不到模板问题,查阅各大神解决方案,分享一下针对新手如何解决该问题,如有不对的地方请大神指正 1.首先修改自己的config文件,添加如下配置代码:// ...
- PYTHON 常用API ***
1.类型判断 data = b'' data = bytes() print (type(data)) #<class 'bytes'> isinstance(123,int) if ty ...
- boost::threadpool 调用类成员变量并传入参数 的方法
1. 首先到官网下载 http://threadpool.sourceforge.net/ 2. 包含头文件 #include "../boost/threadpool.hpp& ...
- 在eclipse中使用mybatis-generator自动创建代码
1.eclipse中安装插件,地址:http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/ ...
- Spring源码分析之——导入spring-framework源代码到Eclipse
本人最近想要研究spring的源代码,但当要导入spring sub project到Eclipse里面去的时候遇到了不少麻烦(其实都怪自己想当然). 找到spring-framework的gitHu ...
- jenkins之构建触发器
build whenever a snapshot dependency is built 当job依赖的快照版本被build时,执行本job. build after other projects ...
- vue组件化开发实践
前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...
- FDQuery sqlserver 临时表
用FDQuery执行创建临时表,查不到临时表,用ADOQuery和BDEQuery均正常,比较发现用ADOQuery执行的时候只有SQL没有调用sql的系统存储过程sp_prepexec. 是fdqu ...
- 可视化库-Matplotlib-3D图(第四天)
1. 画三维图片图 axes = Axes3D(fig)这一步将二维坐标转换为三维坐标,axes.plot_surface() import matplotlib.pyplot as plt impo ...
- 点赞功能实现 $(tag).css('属性', '样式')
1. 创建标签 document.createElement() 2.$(tag).css('属性', 样式) 赋予标签属性样式 3.设置定时器 改变位置 大小 <!DOCTYPE html&g ...