导出NPOI

table:表

dataName:文件名

listNme:列名

public void RenderToExcel(DataTable table, string dataName, string[] listNme)
{
var countL = listNme.Length;
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet(dataName);//创建工作表
sheet.SetColumnWidth(1, 40 * 256);
sheet.SetColumnWidth(2, 30 * 256);
sheet.SetColumnWidth(3, 30 * 256);
sheet.SetColumnWidth(4, 20 * 256);
sheet.SetColumnWidth(5, 20 * 256);

#region 标题
IRow row = sheet.CreateRow(0);//在工作表中添加一行
for (int i = 0; i < listNme.Length; i++)
{
ICell cell = row.CreateCell(i);//在行中添加一列
cell.SetCellValue(listNme[i]);//设置列的内容

}
#endregion

#region 填充数据
for (int i = 1; i <= table.Rows.Count; i++)//遍历DataTable行
{
DataRow dataRow = table.Rows[i - 1];
row = sheet.CreateRow(i);//在工作表中添加一行
var n = table.Columns.Count;
for (int j = 0; j < table.Columns.Count; j++)//遍历DataTable列
{

ICell cell = row.CreateCell(j);//在行中添加一列
if (countL < n)
{
if (j<5)
{
if (j >= 3)
{
cell.SetCellValue(dataRow[j + 1].ToString());//设置列的内容
}
else
{
cell.SetCellValue(dataRow[j].ToString());//设置列的内容
}
}

}
else
{
cell.SetCellValue(dataRow[j].ToString());//设置列的内容

}

}
}
#endregion

#region 输出到Excel
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(dataName + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
Response.BinaryWrite(ms.ToArray());
Response.End();
//var file = new FileStream("C:\\Users\\Administrator\\Desktop\\" + dataName + ".xls", FileMode.Create);
//workbook.Write(file);
//file.Close();
workbook = null;
ms.Close();
ms.Dispose();
#endregion

}

时间: 2024-10-13 20:14:21

导出NPOI的相关文章

Excel导出---NPOI和MS两种方式

NPOI方式(NPOI开源免费): 1 /// <summary> 2 /// 导出Excel文件 3 /// </summary> 4 /// <param name="sheetName"></param> 5 /// <param name="titles">EXCEL表格表头</param> 6 /// <param name="rowSpan">要合并的

C#导出Excel那些事

Excel导出 Excel导出的意义 因为在项目中有些报表数据客户需要导出功能,那么导出为Excel就十分有必要了,可是有些客户的机器上并没有安装Excel或者安装的版本参差不一.那么我们在这样的情况下应该应该怎么做呢?最简单的方法就是引用Excel相关的Com组件就行了,可是这种情况只能在安装了Excel的用户适用,对于没有安装Excel的用户不能强制用户安装吧.那么我们只能将眼光瞄向第三方的类库了,能用的Excel操作导出类库大致有这么三个 NPOI ExcelRepor aspose.ce

二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCa 前言:本章介绍除DotNetBar2控件套件之外的另外一些常用控件,包括Grid++Report报表.条形码.Excel导出.图表控件ZedGraph:类似这些控件网上免费开源的太少了,经过一番对比和使用感受最后决定把这几个控件整合到EFW框架中供大家选择使用: 本

Npoi导出Excel 实战篇(Webform)

废话不多说,直接上遇到的问题 需求:在这个界面点击导出,导出页面数据,苦于没有做过webfrom项目,弄了半天还是没想到原生态的好方法,所以在网上看了下有没有导出的好例子,结果发现有人推荐使用Npoi,抱着强烈的好奇心,就去查了下这个东东,发现果然强大,哈哈,里面集成了很多东西,下面直接进入解决问题正题: 实现过程(仅供参考) ①发现项目里面接口方法返回DataTable是带参数的,所以新增了一个无参数的方法 ②实现这个方法,重点是将查询到的结果集放大DataTable中 ③先去官网:http:

第三方库NPOI,EPPlus,MyXls导出Excel性能比较

测试平台 CPU:i5 6500 内存:2x4G .NET4.0 测试结果如下: 性能上通过对比很容易得出结论,各方面npoi是最优选择.epplus在列数不是很多的情况下,性能也不错,但是当数据多了的情况下, 对比npoi就有不小的差距了.至于MyXls在测试过程中,当数据较多时,内存不够支撑,直接崩溃了. 性能比较结果: npoi>epplus>Myxls 功能比较结果: npoi是最全的,即能导出2003的.xls格式也能导出2007以后的.xlsx格式.MyXls只能导出.xls,ep

NPOI导出excel(带图片)

近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新工具包. 2.选择.net版本(例如dotnet4),引用其中的dll. 3.后台代码 using System; using System.Web; using System.Data; using System.Configuration; using System.IO; using Test

NPOI导出功能

利用NPOI组件将数据中想要的数据导出到excel表格中. demo如下 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using NPOI.HSSF.UserModel; 6 using NPOI.SS.UserModel; 7 using System.IO; 8 9 namespace ConsoleApplication1 10 { 11 cl

使用NPOI导入导出标准Excel

尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 直接导出html,修改后缀名为.xls,这个方法有点像骗人的把戏,而且不能再导入 使用Jet OLEDB引擎来进行导入导出,完全使用sql语句来进行操作,缺点能控制的东西非常有限,比如格式就难以控制 使用Office COM组件进行导入导出,对环境依赖性太强(如"检索 COM 类工厂-"错

NPOI导入,导出

概述 NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.NPOI 可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写,包含了大部分EXCEL的特性(单元格样式.数据格式.公式等等).(复制百度百科) 表格导入导出的操作经常会碰到,最近抽空专门封装了一下. 遵循的原则: 1. 一行数据对应一个数据实体,需提供它们二者间的映射关系. 2. 支持合并单元格的导入导出(导出数据只支持竖向合并