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; } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM