之前转过一篇类似的文章,那个是用C#自带的excel类操作Excel的,还有一种在c#上操作excel的方法便是npoi了,npoi是poi的C#版本。

npoi操作excel有两种形式,一种是hssf和xssf。hssf是用来生成excel2003之前的版本,生成的excel后缀是“.xls”,而xssf是excel2007的版本,操作的excel的后缀是“.xlsx”。

npoi中常用的类型:

XSSF/HSSFWorkbook:excel文件的工作簿,

Isheet:excel文件的工作簿中的工作表,

IRow:excel文件的工作簿中的工作表中的行,

ICell:excel文件的工作簿中的工作表中的行中的单元格。

举一个简单的导出excel的方法

 public static IWorkbook TableToExcel(DataTable dt, string fileExt = ".xlsx")
{
IWorkbook workbook;
if (fileExt == ".xlsx")
{
workbook = new XSSFWorkbook();
}
else if (fileExt == ".xls")
{
workbook = new HSSFWorkbook();
}
else
{
workbook = null;
}
if (workbook == null)
{
return null;
}
ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName); //表头
IRow row = sheet.CreateRow();
for (int i = ; i < dt.Columns.Count; i++)
{
ICell cell = row.CreateCell(i);
cell.SetCellValue(dt.Columns[i].ColumnName); } //数据
for (int i = ; i < dt.Rows.Count; i++)
{
IRow row1 = sheet.CreateRow(i + );
for (int j = ; j < dt.Columns.Count; j++)
{
ICell cell = row1.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString()); }
}
//设置宽度
for (int i = ; i < dt.Columns.Count; i++)
{
int length = Encoding.Default.GetBytes(row.GetCell(i).ToString()).Length;
sheet.SetColumnWidth(i, (length + ) * );
}
return workbook; } //生成excel:

using (MemoryStream ms = new MemoryStream())
{
workbook.Write(ms);
var buffer = ms.GetBuffer();
ms.Close();
return File(buffer, "application/vnd.ms-excel", "个人提成补录模板.xls");
}

 

如果要更改单元格颜色的样式,可以用下面的方法:

            ICellStyle style = workbook.CreateCellStyle();
style.FillPattern = FillPattern.SolidForeground;//很重要
style.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;
style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index; IRow excelRow = workbook.GetSheetAt().GetRow();
for (int i = ; i <= ; i++)
{
excelRow.GetCell(i).CellStyle = style;
}
excelRow.GetCell().CellStyle = style;
excelRow.GetCell().CellStyle = style;
excelRow.GetCell().CellStyle = style;

改颜色纠结了好久,也查了好多资料,网上有好多用cell.setcellstyle()这个方法的,我试了一下,根本没有,而且好多都是那样写的,不知道是java的还是啥的,应该不是.net的。

C#npoi导出excel一些自己的看法的更多相关文章

  1. NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters

    /******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...

  2. Asp.Net 使用Npoi导出Excel

    引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...

  3. NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

  4. .NET NPOI导出Excel详解

    NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...

  5. NPOI导出Excel(含有超过65335的处理情况)

    NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...

  6. [转]NPOI导出EXCEL 打印设置分页及打印标题

    本文转自:http://www.cnblogs.com/Gyoung/p/4483475.html 在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方 ...

  7. 分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限

    大家都知道使用NPOI导出Excel格式数据 很简单,网上一搜,到处都有示例代码. 因为工作的关系,经常会有处理各种数据库数据的场景,其中处理Excel 数据导出,以备客户人员确认数据,场景很常见. ...

  8. 用NPOI导出Excel

    用NPOI导出Excel public void ProcessRequest(HttpContext context) { context.Response.ContentType = " ...

  9. NPOI导出Excel示例

    摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...

随机推荐

  1. nginx+fastcgi php 使用file_get_contents、curl、fopen读取localhost本站点.php异常的情况

    原文:http://www.oicto.com/nginx_fastcgi_php_file_get_contents/ 参考:http://os.51cto.com/art/201408/44920 ...

  2. MySQL show status命令参数

    Aborted_clients         由于客户没有正确关闭连接已经死掉,已经放弃的连接数量.   Aborted_connects 尝试已经失败的MySQL服务器的连接的次数.   Binl ...

  3. USB自定义HID设备实现-STM32

    该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在 #include "usb_desc.h& ...

  4. 一个苹果证书怎么多次使用——导出p12文件

    http://blog.csdn.net/jjiss318/article/details/41812243 原文:http://my.oschina.net/u/1245365/blog/19636 ...

  5. IdTCP的C++Builder2010示例(转)

    源:IdTCP的C++Builder2010示例 IdTCP的C++Builder2010示例 这个是服务端的: void __fastcall TTCPDataServer::TCPServerEx ...

  6. js传递数组到后台

    //post方法不得行,各种问题...改为ajax就阔以了.//默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架, // ...

  7. Insert Select

    有三种用法 1.insert  values 2.insert select 3.inser exec

  8. IOS中APP开发常用的一些接口

    免费的API接口: 1.聚合数据,上面有手机归属地查询等: 2.百度API store:上面有很多免费的接口,可以使用在自己的app中: 3.环信:提供一些用户交互的一些场景等,可以用来做即时通讯软件

  9. IOS开发中长按的手势事件编程

    长按手势事件: 长按按钮1S后改变按钮颜色: // 长按事件 #import "ViewController.h" @interface ViewController (){ UI ...

  10. 统计学常用概念:T检验、F检验、卡方检验、P值、自由度

    1,T检验和F检验的由来 一般而言,为了确定从样本(sample)统计结果推论至总体时所犯错的概率,我们会利用统计学家所开发的一些统计方法,进行统计检定. 通过把所得到的统计检定值,与统计学家建立了一 ...