1. 程式人生 > >NPOI簡單的給某個單元格字型設定顏色

NPOI簡單的給某個單元格字型設定顏色

參考文件有:

https://www.cnblogs.com/gossip/p/4307486.html

 https://bbs.csdn.net/topics/391042064?page=1

效果圖:

 

 需求分析:匯出資料時能夠匯出一段時間段內的所有產品質量資料,要求每天的資料放到一個Excel檔案中,每天所有總成的資料按總成劃分,每個總成一個工作簿,以此類推,匯出後壓縮到資料夾中返回到瀏覽器供使用者檢視。因為會存在某日沒有生產資料,但依然要匯出Excel檔案,起初的效果如下圖所示,為空白工作簿,沒有一個單元格。對於沒有資料的Excel匯出文件當然還是要有表頭和單元格的,如果能加上“無資料”的說明,就更人性化了

 

 

        /// <summary>
        /// 每日所有資料按每個總成一個工作簿匯出到excel中
        /// </summary>
        /// <param name="exportDataList">某日的excel資料內容</param>
        /// <param name="fieldInfies">excel表頭</param>
        /// <returns></returns>
        public static
HSSFWorkbook createHSSFWorkbook_Day(Dictionary<string, List<T>> exportDataList, List<ExportFieldInfo> fieldInfies) { HSSFWorkbook book = new HSSFWorkbook(); try { if (exportDataList.Count != 0) {
foreach (var items in exportDataList) { ISheet sheet = book.CreateSheet(items.Key); IRow rowTitle = sheet.CreateRow(0); IRow rowtemp; for (int k = 0; k < fieldInfies.Count; k++) { rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName); } for (int j = 0; j < items.Value.Count; j++) { object tempobj = items.Value[j]; //獲取型別 Type type = tempobj.GetType(); List<System.Reflection.PropertyInfo> ps = type.GetProperties().ToList(); //將資料寫入sheet各個行 rowtemp = sheet.CreateRow(j + 1); for (int k = 0; k < fieldInfies.Count; k++) { //獲取屬性值 var value = ps.First(t => t.Name == fieldInfies.ElementAt(k).FieldName).GetValue(tempobj, null); switch (fieldInfies.ElementAt(k).DataType) { case DataTypeEnum.Int: rowtemp.CreateCell(k).SetCellValue(Convert.ToInt32(value)); break; case DataTypeEnum.Float: rowtemp.CreateCell(k).SetCellValue(Convert.ToDouble(value)); break; case DataTypeEnum.Double: rowtemp.CreateCell(k).SetCellValue(Convert.ToDouble(value)); break; case DataTypeEnum.String: rowtemp.CreateCell(k).SetCellValue(Convert.ToString(value)); break; case DataTypeEnum.DateTime: rowtemp.CreateCell(k).SetCellValue(Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm:ss.SSS")); break; case DataTypeEnum.Date: rowtemp.CreateCell(k).SetCellValue(Convert.ToDateTime(value).ToString("yyyy-MM-dd")); break; default: break; } } tempobj = null; ps = null; } } } else {
            //這段程式碼為“無資料”情況下的特殊處理
            //建立一個名稱為“Sheet1”的工作簿 ISheet sheet
= book.CreateSheet("Sheet1");
            //建立2行 IRow rowTitle
= sheet.CreateRow(0); IRow rowtemp = sheet.CreateRow(1);
            //給工作簿新增表頭
for (int k = 0; k < fieldInfies.Count; k++) { rowTitle.CreateCell(k).SetCellValue(fieldInfies.ElementAt(k).DisplayName); }
            //給第二行第一列的單元格賦值“無資料” rowtemp.CreateCell(
0).SetCellValue("無資料!");
            //建立單元格樣式 HSSFCellStyle fCellStyle
= (HSSFCellStyle)book.CreateCellStyle();
            //建立字型 HSSFFont ffont
= (HSSFFont)book.CreateFont();
            //給字型設定顏色 ffont.Color
= HSSFColor.Red.Index;
            //給樣式新增字型 fCellStyle.SetFont(ffont);
            //給第二行第一列單元格新增樣式 rowtemp.GetCell(
0).CellStyle = fCellStyle; } } catch(Exception ex) { Console.WriteLine(ex.Message); } return book; } }