NOPI 做Excel 导出确实很方便 ,但是一直在用没好好研究。

在网上没找到自定义Columns的方法 ,于是乎自己就在原来的方法上简单地改改。

想用的童鞋们可以直接拿去用!

         /// 数据大于65536时使用
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="Columns">列名</param>
/// <returns></returns>
public static byte[] ExportToExcel_Columns(DataTable dt, ArrayList Columns)
{
DataColumnCollection str = dt.Columns;
if (str.Count == ) return null;
HSSFWorkbook hssfworkbook;
hssfworkbook = new HSSFWorkbook();
ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
List<NPOI.SS.UserModel.ISheet> sheetList = new List<NPOI.SS.UserModel.ISheet>();
sheetList.Add(sheet1); int rows = dt.Rows.Count + ;
int p = rows % == ? rows / : (rows / ) + ;
for (int i = ; i < p; i++)
{
ISheet sheet = hssfworkbook.CreateSheet("sheet" + (i + ).ToString());
sheetList.Add(sheet);
}
LargeDataExport_Columns(hssfworkbook, sheetList, dt, Columns);
MemoryStream file = new MemoryStream();
hssfworkbook.Write(file);
file.Close();
return file.ToArray();
} private static void LargeDataExport_Columns(NPOI.HSSF.UserModel.HSSFWorkbook hssfworkbook, List<NPOI.SS.UserModel.ISheet> sheetCollection, DataTable dt, ArrayList Columns)
{
// DataColumnCollection str = dt.Columns; //定义表头,原来是从datatable中获取的columns for (int i = ; i < sheetCollection.Count; i++)
{
ISheet sheet1 = sheetCollection[i]; if (i == )
{
IRow headerRow = sheet1.CreateRow();
for (int m = , len = Columns.Count; m < len; m++)
{
ICell curCell = headerRow.CreateCell(m);
headerRow.Height = * ;
ICellStyle style = hssfworkbook.CreateCellStyle();
style.FillPattern = FillPattern.SolidForeground;
style.FillForegroundColor = HSSFColor.Grey25Percent.LightOrange.Index;
IFont font = hssfworkbook.CreateFont();
font.FontHeightInPoints = ;
font.Color = HSSFColor.White.Index; //HSSFColor.WHITE.index;
style.SetFont(font);
curCell.CellStyle = style;
curCell.SetCellValue(Columns[m].ToString());
sheet1.SetColumnWidth(m, * );
}
} for (int j = i * ; j < (i + ) * ; j++)
{
if (j > dt.Rows.Count - )
break;
IRow row = sheet1.CreateRow(j - * i + );
row.Height = * ; for (int k = ; k < dt.Columns.Count; k++)
{
ICell rowCell = row.CreateCell(k);
rowCell.SetCellValue(dt.Rows[j][k].ToString());
}
}
}
}

 程序调用:

         /// <summary>
///xxxx数据导出
/// </summary>
/// <param name="flg"></param>
/// <returns></returns>
public FileResult ExportExcel_ProfitDetails()
{
DataSet ds = new DataSet();
//获取当前操作用户
string userRealName = "";
if (!string.IsNullOrEmpty(Session["user"].ToString()))
{
userRealName = Session["user"].ToString();
} tempLog.Info(string.Format("用户:{0}正在做xxxx数据导出操作", userRealName));
string date = Request["datetime"].ToString();
ds = Automation.Common.DbHelperSQL.Query("ColligateExport");
//创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
System.IO.MemoryStream ms = new System.IO.MemoryStream(); NPOIExcelHelper n = new NPOIExcelHelper();
byte[] fileArr = null;
try
{
string[] a = new string[] { "ID", "应支付金额", "应支付日期", "支付期数","支付状态","公司收入","公司支出"
,"支付类型","工单ID","收益明细ID", "转让债权价值","还款金额","还款日期","实际支付金额","实际本金","实际利息"};
ArrayList alist = new ArrayList();
alist.AddRange(a);
fileArr = NPOIExcelHelper.ExportToExcel_Columns(ds.Tables[],alist);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
string fileName = "xxxx数据" + System.DateTime.Now.ToString("yyyyMMddhhssmm");
tempLog.Info(string.Format("导出xxxx数据的Excel文件名为:{0}", fileName));
return File(fileArr, "application/vnd.ms-excel", fileName + ".xls");
}

最后:使用时记得加上NOPI 引用哦!

转载请注明出处:http://www.cnblogs.com/apeng/p/5579834.html

NOPI导出Excel 自定义列名的更多相关文章

  1. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

  2. NOPI导出Excel

    NOPI导出Excel /// <summary> /// 导出的方法 Excel样式 /// </summary> /// <param name="ds&q ...

  3. NOPI 导出 Excel 2007

    代码: public static void ThisTo<T>( List<T> source, string[] colums, Func<T, object[]&g ...

  4. NOPI 导出excel 通用方法

    public static byte[] ExportExcel<T>(Dictionary<string, string> columnsHeader, List<T& ...

  5. asp.net mvc4 easyui datagrid 增删改查分页 导出 先上传后导入 NPOI批量导入 导出EXCEL

    效果图 数据库代码 create database CardManage use CardManage create table CardManage ( ID ,) primary key, use ...

  6. ASP.NET导入导出Excel方法大全

    本文介绍下,C#实现的可以导出与导入excel的代码一例,有需要的朋友,参考下吧. C#实现导出与导入excel.代码1: 复制代码 代码示例:#region  导出Excel  /// <su ...

  7. 170313、poi:采用自定义注解的方式导入、导出excel(这种方式比较好扩展)

    步骤一.自定义注解 步骤二.写Excel泛型工具类 步骤三.在需要导出excel的类属相上加上自定义注解,并设置 步骤四.写service,controller 步骤一:自定义注解 import ja ...

  8. Asp.net导出Excel续章(自定义合并单元格,非Office组件)

    结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置 ...

  9. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

随机推荐

  1. Backward Digit Sums(暴力)

    Backward Digit Sums Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5664   Accepted: 32 ...

  2. .CN根域名被攻击至瘫痪,谁之过?【转】

    2013年8月25日凌晨,.CN域名凌晨出现大范围解析故障,经分析.CN的根域授权DNS全线故障,导致大面积.CN域名无法解析.事故造成大量以.cn和.com.cn结尾的域名无法访问.直到当日凌晨4点 ...

  3. arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现

    图层控制是非常多GIS系统里面必须的一个小功能,本文就说说arcgis for javascript下ArcGISDynamicMapServiceLayer图层控制的实现方式.首先看图: 实现效果 ...

  4. VS中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法

    最近使用VS,在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示.查阅资料,找到解决方案,记录如下: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型” ...

  5. 介绍Foundation框架

    开始介绍Foundation框架.OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我 ...

  6. Set无序怎么办?

    在JAVA中,提供多种不同的结构来组织对象,Set(集合)是其中的一种,本身是一个接口,其迭代时的顺序取决于其具体实现. 典型的实现包括: HashSet:哈希表是通过使用称为散列法的机制来存储信息的 ...

  7. Python核心编程读笔 13:执行环境

    第14章  执行环境 一.可调用对象 python有四种可调用对象:函数.方法.类.一些类的实例 1 函数 (1)内建函数(BIF) BIF是用c/c++写的,编译后放入python解释器,然后把它们 ...

  8. QF——OC内存管理详解

    堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理.因为栈的内存会自动回收,堆的内存需要我们手动回收. 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中.因 ...

  9. Linux简介(好!)

    Linux操作系统介绍 来源:233网校论文中心[ 2009-12-02 14:23:00 ]阅读:1作者:王长青编辑:studa20 [摘 要]文章从Unix.Minix系统的产生引出了Linux操 ...

  10. EBS 开发中如何动态启用和禁止请求(Current Request)的参数

    EBS 开发中如何动态启用和禁止请求(Current Request)的参数 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 我们可以使用依赖 ...