整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过。这个是一个完整的过程。

首先是已经查找好的数据,这里就不写怎么查找了,生成的结果是DataSet ds。

首先是生成一个带需求结果的表格,DataTable dtExcel = GetNewTbl("dtExcelModel");

GetNewTbl方法的代码如下:

 public static DataTable GetNewTbl(string tableName)
{
var dt = new DataTable();
switch (tableName)
{
case "ConfigModel":
dt.Columns.Add("CorpCode", typeof(String));
dt.Columns.Add("GroupName", typeof(String));
dt.Columns.Add("Guid", typeof(String));
break;
case "dtExcelModel":
dt.Columns.Add("id", typeof(String));
dt.Columns.Add("状态", typeof(String));
break;
}
return dt;
}

接着生成要打印的文件

 DataTable dtExcel = Dt.GetNewTbl("dtExcelModel");
dtExcel.TableName = "Sheet1";
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
DataRow dr = dtExcel.NewRow();
dr["id"] = ds.Tables[].Rows[i]["id"].ToString();
dr["状态"] = ds.Tables[].Rows[i]["Status"].ToString();
}
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
RenderToExcel(dtExcel, Context, fileName);
RenderToExcel的方法
 public static void RenderToExcel(DataTable table, HttpContext context, string fileName)
{
using (MemoryStream ms = RenderToExcel(table))
{
RenderToBrowser(ms, context, fileName);
}
}

调用NPOI的方法,代码如下:

 public static MemoryStream RenderToExcel(DataTable table)
{
MemoryStream ms = new MemoryStream();
using (table)
{
IWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet();
IRow headerRow = sheet.CreateRow();
foreach (DataColumn column in table.Columns)
{
var headCell = headerRow.CreateCell(column.Ordinal);
headCell.SetCellValue(column.Caption);
}
int rowIndex = ;
foreach (DataRow row in table.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex);
foreach (DataColumn column in table.Columns)
{
var cellell = dataRow.CreateCell(column.Ordinal);
cellell.SetCellValue(row[column].ToString());
}
rowIndex++;
}
workbook.Write(ms);
ms.Flush();
ms.Position = ;
}
return ms;
}

还有写文件流的方法RenderToBrowser:

 public static void RenderToBrowser(MemoryStream ms, HttpContext context, string fileName)
{
context.Response.Clear();
context.Response.ContentEncoding = Encoding.GetEncoding("GB2312");
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
context.Response.BinaryWrite(ms.ToArray());
context.Response.Flush();
context.Response.End();
}

.net利用NPOI生成excel文件的更多相关文章

  1. C#利用NPOI操作Excel文件

    NPOI作为开源免费的组件,功能强大,可用来读写Excel(兼容xls和xlsx两种版本).Word.PPT文件.可是要让我们记住所有的操作,这便有点困难了,至此,总结一些在开发中常用的针对Excel ...

  2. Aspose.Cell和NPOI生成Excel文件

    1.使用Aspose.Cell生成Excel文件,Aspose.Cell是.NET组件控件,不依赖COM组件 1首先一点需要使用新建好的空Excel文件做模板,否则容易产生一个多出的警告Sheet 1 ...

  3. java利用poi生成excel文件后下载本地

    1.该功能需要poi的jar包,链接: http://pan.baidu.com/s/1migAtNq 密码: 38fx. 2.首先新建一个实体类,用以存放单个数据 public class Test ...

  4. Java 利用 poi 生成 Excel文件的通用例子

    在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...

  5. Aspose.Cell和NPOI生成Excel文件2

    NPOI还是比较好用的,引用dll程序集即可 1创建workbook和工作流 HSSFWorkbook workbook = new HSSFWorkbook(); MemoryStream ms = ...

  6. asp.net mvc NPOI 生成Excel文件

    private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...

  7. C# WPF 利用NPOI读写Excel文件

    https://blog.csdn.net/a312024054/article/details/70139172 [各种样式] https://www.cnblogs.com/xwgli/archi ...

  8. C#利用NPOI导出Excel类(简单版)

    代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...

  9. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

随机推荐

  1. yum被锁定:Another app is currently holding the yum lock; waiting for it to exit…

    yum被锁定无法使用,错误信息截图如下: 解决方法:rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了

  2. ceph 文件系统(cephfs) -- 初体验

    一.介绍: ceph MDS 是元数据服务器,只有ceph 文件系统(cephFS)才会需要. cephFS 在RADOS 层之上 提供一个兼容POSIX 的文件系统.他是用MDS 作为守护进程,负责 ...

  3. 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]

    深度优先搜索算法(Depth First Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点 ...

  4. Python+Selenium学习--简单对象定位

    场景 测试对象的定位和操作是webdriver的核心内容,其中操作又是建立在定位的基础之上,因此对象定位就越发显得重要了. 定位对象的目的一般有下面几种 操作对象 获得对象的属性,如获得测试对象的cl ...

  5. FortiGate软件版本升级

    1.Web界面升级 1)注意:升级前,务必做好配置备份 2)要点 1.FortiGate防火墙的每款型号都有单独的版本文件,升级前务必确认下当前的设备型号: 2.升级包的后缀名必须为.out,前缀任意 ...

  6. Delphi: TLabel设置EllipsisPosition属性用...显示过长文本时,以Hint显示其全文本

    仍然是处理多语言中碰到问题. Delphi自2006版以后,TLabel有了EllipsisPosition属性,当长文本超过其大小时,显示以...,如下图: 这样虽然解决显示问题,但很显然,不知道. ...

  7. 解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据

    我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动 ...

  8. [leetcode]123. Best Time to Buy and Sell Stock III 最佳炒股时机之三

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  9. 【RabbitMQ】——5种队列(转)

    原文地址:https://blog.csdn.net/u012654963/article/details/76417613 应用RabbitMQ,我们可以根据需求选择5种队列之一. 一.简单队列 P ...

  10. 2017.9.26JQuery源码解析一 架构与依赖

    jq1.0: css选择符   事件处理  ajax交互 1.2.3: 引入数据缓存,解决循环引用与大数据保存问题 1.3.  : 使用全新的选择器引擎sizzle,在各个浏览器下全面超越其他同类js ...