整理代码,这个是生成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. google翻译插件安装

    来源:http://www.cnplugins.com/tools/how-to-setup-crx.html 1. 下载: 2.拖拽: 3.下一步安装 4.完成.

  2. python+selenium的环境配置

    以前写过关于python和selenium加myeclipse的环境配置,但是myeclipse启动时过于费时,虽然myeclipse有很好的提示功能,但是作为初学者,我还是直接用python的idl ...

  3. sqlserver自增主键

    参考 https://www.cnblogs.com/michellexiaoqi/p/8031294.html 1.选中表:         2.右击鼠标,设计:         3.选中列(整数类 ...

  4. python 遍历enumerate

    在python中enumerate的用法多用于在for循环中得到计数,本文即以实例形式向大家展现python中enumerate的用法.具体如下: enumerate参数为可遍历的变量,如 字符串,列 ...

  5. openstack(Pike 版)集群部署(七)--- Cinder 部署

    一.介绍 参照官网部署:https://docs.openstack.org/cinder/pike/install/index-rdo.html 继续上一博客进行部署:http://www.cnbl ...

  6. oracle 中decode函数用法

    学习记录: 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 ...

  7. jquery实现元素高度变化页面变化

    试了几种方法包括有资料说的h5新特性,都没能满足我的需求.我的需求如下: 元素高度是动态可变的,比如可拖动teatarea元素 最后用到了指针监听事件解决了 @参考文档 $(document).mou ...

  8. iOS 组件化流程详解(git创建流程)

    [链接]组件化流程详解(一)https://www.jianshu.com/p/2deca619ff7e

  9. golang语言中os包的学习与使用(文件,目录,进程的操作)

    os中一些常用函数的使用: package main; import ( "os" "fmt" "time" "strings&q ...

  10. Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

    https://blog.csdn.net/saucyj/article/details/79043443