NPOI 生成 Excel

前言

​ 在 c# 中能夠使用對應的com組件生成或操做excel,但前提是必須安裝了Office Excel , 但服務器端不必定會安裝Excel,並且它操做起來並不簡單。可是,使用NPOI這個第三方庫,能夠在服務器不須要安裝Excel的狀況下,簡單快捷的完成Excel相關操做。c#

使用

  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;
 }
相關文章
相關標籤/搜索