C#利用NOPI导出到Excel



前言



  导出Excel,对于大多数人来说应该是太简单的了。

  并且,之前在弄机房收费的时候也用过,

  确实是没有什么难度。


  循环遍历


  但是说了不怕笑话的,就这么个功能,整整弄了两天。


  开始的时候当然就是最傻的遍历塞数据


  不过,不得不说的是真的是慢,如果哪个公司用这种方式,真的那就别混了


  更可笑的是,我还为此加了个多线程,乱七八糟写了一大堆


  当然,最后的结果肯定就是代码全了,从新写。



正文


  NOPI

  今天就是想简单的提一下微软的NOPI,挺好用的


  目的就是,给不知道的小伙伴分享一下,有这么个东西,已经了解的就当我没说。


  对于什么excel导入、导出啊~word啊~还有什么我也不太清楚,反正是挺好用的

  有需要的童鞋可以继续去网络上查看更多资料


  我就使用他的这么一个导出Excel的小功能,进行一下简单的阐述


  然后在说之前我先说一点注意的

  此方法不适用于数据量很大的情况的,因为比较占内存


  还有就是说一下效果吧,先是用那个很傻的办法,不到两万条数据,字段不到十个,用了5分多钟

  用了NOPI之后用了不到2秒钟

  如果这还没有引起你的注意的话,那后面也不用看了


  代码


  首先在使用前,需要先应用几个dll

  

  

  然后在类中还需要引用一下

  


  最后,给小伙伴们展示一下代码(我尽可量的放了少量的代码

  主要是怕有的童鞋,一眼看上去代码好多,感觉此方法很麻烦,其实不然,挺简单的)

public void ExportExcel()
{
	Entity[] list = getData();
	//Entity在这里是一个实体集合,主要用于承载数据,你想用什么装数据都行
	//getData()是一个获取数据的方法,我是直接从数据库查出来的,这里就不给大家看了

	//这里,对这个刚刚获取的数据承载体进行一下判空什么的,我这里也不写了

	//下面这是对电脑中文件夹的操作和导出数据没有直接关系,但是我还是想给大家看一下

	string filePath = System.AppDomain.CurrentDomain.BaseDirectory;
	//获取文件的路径,此路径为该程序的bin\debug下,注意我的用词是debug下,
	//言下之意是debug后面还有一个“\”,客官们还可以自行百度,获取其他相关路径

	//根据项目需求,我需要将文件导出到debug下的一个文件夹中,客官可根据自身需求修改
	//判断是否存在这么一个文件夹,没有的话,就创建一下。
	if(!Directory.Exists(filePath + "我是一个文件夹名"))
	{
		Directory.CreateDirectory(filePath + "我是一个文件夹名");
	}

	using(Stream fs = new FileStream(filePath + @"我是一个文件夹名\我是一个文件名.我是文件后缀名",FileModel.Create,FileAccess.Write))
	{
		XSSFWorkbook work = new XSSFWorkbook();
		//创建一个文件

		ISheet sheet = work.CreateSheet("我是一个表单名");
		//创建一个sheet,并命名
		

		//添加表头 数 据
		IRow row = sheet.CreateRow(0);
		//创建sheet中的一行,0表示第一行

		//下面的cell是指单元格,表示上面刚刚创建的那一行中的单元格
		//其中0,1,2表示,这一行横着数第几个单元格,索引从0开始
		ICell cell1 = row.CreateCell(0, CellType.String);
		cell1.SetCellValue("表头中的第一个字段");

		ICell cell2 = row.CreateCell(1, CellType.String);
		cell2.SetCellValue("表头中的第二个字段");

		ICell cell3 = row.CreateCell(2, CellType.String);
		cell2.SetCellValue("表头中的第三个字段");

		//添加数据,相关注释参考 表头
		for (int i = 0;	i < list.Count(); i++)
		{
			row = sheet.CreateRow(i + 1)
			
			cell1 = row.CreateCell(0, CellType.String);
			cell1.SetCellValue(list[i].我是实体中的某个字段名);

			cell2 = row.CreateCell(1, CellType.String);
			cell2.SetCellValue(list[i].我是实体中的某个字段名);

			cell3 = row.CreateCell(2, CellType.String);
			cell3.SetCellValue(list[i].我是实体中的某个字段名);
		}
		work.Write(fs);
	}
}


  给客官们看了代码,之后也就没什么了


  不知道哪个客官有对于大数据的导出方式,我非常愿意学习


结语


想说点什么,但是那句话,不好说



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章