NPOI 生成 Excel

前言

​ 在 c# 中可以使用对应的com组件生成或操作excel,但前提是必须安装了Office Excel , 但服务器端不一定会安装Excel,而且它操作起来并不简单。但是,使用NPOI这个第三方库,可以在服务器不需要安装Excel的情况下,简单快捷的完成Excel相关操作。

使用

  1. 安装对应Nuget

  2. 使用帮助类

 /// <summary>
 ///    返回excel的字节数组
 ///     可储存为文件
 ///     文件后缀为".xls"
 /// </summary>
 /// <typeparam name="T">是数据对象</typeparam>
 /// <param name="dataList">数据列表</param>
 /// <param name="headers">表头</param>
 /// <returns></returns>
 public static byte[] GetExcel<T>(IList<T> dataList, IList<string> headers)
 {
     if (dataList == null || dataList.Count == 0)
         throw new ArgumentException("无效数据列表");
     if (headers == null)
         throw new ArgumentNullException();
     var wk = new HSSFWorkbook(); //表示一个Excel文件
     var sheet = wk.CreateSheet(); // Excel中的sheet
     var header = sheet.CreateRow(0); // 第一行储存表头信息
     for (var i = 0; i < headers.Count; i++)
     {
         header.CreateCell(i).SetCellValue(headers[i]);
     }
     for (var i = 0; i < dataList.Count; i++)
     {
         var o = dataList[i];
         var row = sheet.CreateRow(i + 1);
         var cellNo = 0;
         object value;
         string cell;
         // 如果已知要储存哪些属性, 可不使用反射
         foreach (var info in o.GetType().GetProperties())
         {
             value = info.GetValue(o, null);
             cell = value == null ? String.Empty : value.ToString();
             row.CreateCell(cellNo++).SetCellValue(cell);
         }
     }
     byte[] data;
     using (var ms = new MemoryStream())
     {
         wk.Write(ms);
         data = ms.GetBuffer();
         wk.Close();
     }
     return data;
 }

转载于:https://www.cnblogs.com/clockwork/p/6544177.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值