NOPI导出Excel 自定义列名

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

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

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

 1         /// 数据大于65536时使用
 2         /// </summary>
 3         /// <param name="dt">数据源</param>
 4         /// <param name="Columns">列名</param>
 5         /// <returns></returns>
 6         public static byte[] ExportToExcel_Columns(DataTable dt, ArrayList Columns)
 7         {
 8             DataColumnCollection str = dt.Columns;
 9             if (str.Count == 0) return null;
10             HSSFWorkbook hssfworkbook;
11             hssfworkbook = new HSSFWorkbook();
12             ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
13             List<NPOI.SS.UserModel.ISheet> sheetList = new List<NPOI.SS.UserModel.ISheet>();
14             sheetList.Add(sheet1);
15
16             int rows = dt.Rows.Count + 1;
17             int p = rows % 65535 == 0 ? rows / 65535 : (rows / 65535) + 1;
18             for (int i = 1; i < p; i++)
19             {
20                 ISheet sheet = hssfworkbook.CreateSheet("sheet" + (i + 1).ToString());
21                 sheetList.Add(sheet);
22             }
23             LargeDataExport_Columns(hssfworkbook, sheetList, dt, Columns);
24             MemoryStream file = new MemoryStream();
25             hssfworkbook.Write(file);
26             file.Close();
27             return file.ToArray();
28         }
29
30         private static void LargeDataExport_Columns(NPOI.HSSF.UserModel.HSSFWorkbook hssfworkbook, List<NPOI.SS.UserModel.ISheet> sheetCollection, DataTable dt, ArrayList Columns)
31         {
32             // DataColumnCollection str = dt.Columns; //定义表头,原来是从datatable中获取的columns
33
34             for (int i = 0; i < sheetCollection.Count; i++)
35             {
36                 ISheet sheet1 = sheetCollection[i];
37
38                 if (i == 0)
39                 {
40                     IRow headerRow = sheet1.CreateRow(0);
41                     for (int m = 0, len = Columns.Count; m < len; m++)
42                     {
43                         ICell curCell = headerRow.CreateCell(m);
44                         headerRow.Height = 150 * 3;
45                         ICellStyle style = hssfworkbook.CreateCellStyle();
46                         style.FillPattern = FillPattern.SolidForeground;
47                         style.FillForegroundColor = HSSFColor.Grey25Percent.LightOrange.Index;
48                         IFont font = hssfworkbook.CreateFont();
49                         font.FontHeightInPoints = 10;
50                         font.Color = HSSFColor.White.Index; //HSSFColor.WHITE.index;
51                         style.SetFont(font);
52                         curCell.CellStyle = style;
53                         curCell.SetCellValue(Columns[m].ToString());
54                         sheet1.SetColumnWidth(m, 400 * 10);
55                     }
56                 }
57
58                 for (int j = i * 65535; j < (i + 1) * 65535; j++)
59                 {
60                     if (j > dt.Rows.Count - 1)
61                         break;
62                     IRow row = sheet1.CreateRow(j - 65535 * i + 1);
63                     row.Height = 120 * 3;
64
65                     for (int k = 0; k < dt.Columns.Count; k++)
66                     {
67                         ICell rowCell = row.CreateCell(k);
68                         rowCell.SetCellValue(dt.Rows[j][k].ToString());
69                     }
70                 }
71             }
72         }

 程序调用:

 1         /// <summary>
 2         ///xxxx数据导出
 3         /// </summary>
 4         /// <param name="flg"></param>
 5         /// <returns></returns>
 6         public FileResult ExportExcel_ProfitDetails()
 7         {
 8             DataSet ds = new DataSet();
 9             //获取当前操作用户
10             string userRealName = "";
11             if (!string.IsNullOrEmpty(Session["user"].ToString()))
12             {
13                 userRealName = Session["user"].ToString();
14             }
15
16             tempLog.Info(string.Format("用户:{0}正在做xxxx数据导出操作", userRealName));
17             string date = Request["datetime"].ToString();
18             ds = Automation.Common.DbHelperSQL.Query("ColligateExport");
19             //创建Excel文件的对象
20             NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
21             System.IO.MemoryStream ms = new System.IO.MemoryStream();
22
23             NPOIExcelHelper n = new NPOIExcelHelper();
24             byte[] fileArr = null;
25             try
26             {
27                 string[] a = new string[] { "ID", "应支付金额", "应支付日期", "支付期数","支付状态","公司收入","公司支出"
28                   ,"支付类型","工单ID","收益明细ID", "转让债权价值","还款金额","还款日期","实际支付金额","实际本金","实际利息"};
29                 ArrayList alist = new ArrayList();
30                 alist.AddRange(a);
31                 fileArr =  NPOIExcelHelper.ExportToExcel_Columns(ds.Tables[0],alist);
32             }
33             catch (Exception ex)
34             {
35                 throw new Exception(ex.Message);
36             }
37             string fileName = "xxxx数据" + System.DateTime.Now.ToString("yyyyMMddhhssmm");
38             tempLog.Info(string.Format("导出xxxx数据的Excel文件名为:{0}", fileName));
39             return File(fileArr, "application/vnd.ms-excel", fileName + ".xls");
40         }

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

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

时间: 2024-11-09 21:41:23

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

NOPI导出Excel

Imports System.IO Imports NPOI.HSSF.UserModel Imports NPOI.HPSF Imports NPOI.POIFS.FileSystem Imports NPOI.HSSF.Util Imports NPOI.SS.UserModel Imports NPOI.SS.Util Imports Common Public Class NopExcel Private Init_Date As String = String.Empty Privat

Asp.net MVC 利用 Nopi 导出 Excel

/// <summary> /// 导出认账流水 /// </summary> /// <returns></returns> public ActionResult ExportAdmitBankTrans(BankTransQueryModel queryModel) { HSSFWorkbook workBook = new HSSFWorkbook(); ISheet sheet = workBook.CreateSheet("商务报表&q

DataTable 导出 excel , 可以自定义列名,没有繁琐的引用

/// <summary> /// 由DataTable导出Excel /// </summary> /// <param name="p"></param> /// <param name="dt"></param> /// <param name="fileName"></param> /// <param name="b"

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

结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置的麻烦,这次就不使用Office组件来生成Excel了. 上篇文章:Asp.net导出Excel(HTML输出) 关键代码如下图: 说道这里,其实主要思路已经很明显了. 在数据绑定结束后,重新绘制表头替换掉原来的表头就行了. TableCell自定义表头的时候是table标签的,很方便. 另外发现了

laravel-admin 自定义导出excel功能,并导出图片

https://www.jianshu.com/p/91975f66427d 最近用laravel-admin在做一个小项目,其中用到了excel导出功能. 但是laravel-admin自带的导出功能不带图片,并且导出的数据有很多冗余的字段,并非我所需要的功能. 所以参考官方文档调整代码,实现了自定义导出excel文件,并且带上图片: 步骤如下: 1. 安装laravel-excel插件 可参考laravel5.5 中使用laravel-excel composer require maatw

导入导出Excel的Java工具类ExcelUtil

在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单,但是性能比较好. 由于本项目的导入导出更多关注性能问题,而且jxl提供的功能基本也都够用了,于是选择了jxl作为支持. 实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空

选择性导出excel表中内容

package com.huawei.utils; import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.List;import java.util.Map;

.NET导入导出Excel方法总结

最近,应项目的需求,需要实现Excel的导入导出功能,对于Web架构的Excel导入导出功能,比较传统的实现方式是: 1)导入Excel:将Excel文件上传到服务器的某一文件夹下,然后在服务端完成Excel的读取及数据的存储: 2)导出Excel:在服务端生成需要导出的Excel,然后下载到客户端. 其中,文件的上传和下载本文不在详述,以下主要写一些DataTable或DataSet与Excel之间的相互转换. 转换方式多种多样,网上也有很多前辈分享的代码实现,本文也借鉴了前辈的诸多思路及代码

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦