NPOI导入导出excel文件

项目中对excel的操作都比较头疼,没有复杂的要求时,把数据写入文本文件,数据以制表符分隔,保存时把文件后缀名写成xls,这样简单的excel文件就出来了,实际上还是文本数据,并不是真正的excel文件。NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。使用NPOI可以没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。以下代码为使用NPOI对excel导入导出。


web端导出Excel并下载,winform程序只用生成exce文件的部分保存成文件即可

HttpResponse response = HttpContext.Current.Response;
response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
response.Charset = "UTF-8";
response.ContentType = "application/ms-excel";


MemoryStream ms = new MemoryStream();    //创建内存流用于写入文件      
Workbook workbook = new HSSFWorkbook();   //创建Excel工作簿  
Sheet sheet = workbook.CreateSheet("EquipBill");//创建Sheet表
//根据情况创建行,设置单元格内容
Row row = sheet.CreateRow(sheet.LastRowNum);//在工作表中添加一行
Cell cell = row.CreateCell(0);//创建单元格
cell1.SetCellValue("领用单位");//赋值

workbook.Write(ms);//将Excel写入流
ms.Flush();
ms.Position = 0;

response.BinaryWrite(ms.ToArray());
response.End();



导入excel

using (Stream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
   HSSFWorkbook workbook = new HSSFWorkbook(stream);
   //获取第一个sheet页
   Sheet sheet = workbook.GetSheetAt(0);
   //Execel循环从第二行开始,第一行为标题
   for (int i = 1; i <= sheet.LastRowNum; i++)
   {
       Row row = sheet.GetRow(i);
   //获取第一列,字符类型
       row.GetCell(0).StringCellValue.Trim();
   //获取第二列,数字类型
       row.GetCell(1).NumericCellValue.ToDecimal();
   }
}