最近接触了用c#导出Excel文件的一些操作。

使用NPOI的优势是,开源,操作灵活,不需要下载OFFICE软件,速度快,不过听说,数据量过大的时候,不是很好用,大概那都是几兆的时候吧,不过目前用于我的需要,基本是够了。

关于NPOI的基本操作:http://blog.csdn.net/pan_junbiao/article/details/39717443

使用Npoi需要using几个命名空间:

  1. 1 using NPOI;
  2. 2 using NPOI.HSSF.UserModel;
  3. 3 using NPOI.XSSF.UserModel;
  4. 4 using NPOI.XSSF.Util;
  5. 5 using NPOI.SS.UserModel;
  6. 6 using NPOI.SS.Util;

首先打开文件,需要文件路径,操作模式以及操作权限。

这里打开excel文件有两种对应格式,HSSFWorkbook和XSSFWorkbook,都是继承的IWorkbook。

GetSheet()函数,获取sheet名的方式,获取sheet来操作。

  1. 1 FileStream file = new FileStream(FileSer, FileMode.Open, FileAccess.Read);//读入excel模板
  2. 2 //HSSF适用2007以前的版本,XSSF适用2007版本及其以上的。
  3. 3 XSSFWorkbook UnionBook = new XSSFWorkbook(file);
  4. 4 XSSFSheet unionSheet = null;
  5. 5 unionSheet = (XSSFSheet)UnionBook.GetSheet("sheet1");

NPOI操作excel的方式,有两个特点:

1.它的操作,都是基于Excel的最小单文单元格来的,而且要先获取行getrow(int rownum),然后再获取该行的单元格,getcell(int cellnum)。

2.它的每次获取时,对行或单元格的操作,基于整个sheet,都是从0开始的。也就是要获取第一行的话,是getrow(0),获取第一个单元格的话,是getcell(0)。

按理说,用了XSSFSheet,应该用XSSFRow和XSSFCell的,不过GetRow方法返回的是IRow,所以只能用IRow定义了,ICell的情况也是一样的。

  1. 1 IRow unionRow = unionSheet.GetRow(0);
  2. 2 ICell unionCell = unionRow.GetCell(2);
    3 unionCell.SetCellValue("第一个值");//设值

下面的函数,用于合并单元格的。

  1. 1 //CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
  2. 2 unionSheet.AddMergedRegion(new CellRangeAddress(0, 0, 2, 6));

以上就是基本的操作,在下一节,我会针对我所遇到的问题,写出我的解决方案来的。

版权声明:本文为yiji-xing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yiji-xing/p/6669918.html