9 votes

Comment changer la couleur de la cellule avec NPOI

using NPOI.XSSF.UserModel;
using NPOI.XSSF.Model;

using NPOI.HSSF.UserModel;
using NPOI.HSSF.Model;

using NPOI.SS.UserModel;
using NPOI.SS.Util;

(...)

XSSFWorkbook hssfwb;

using (FileStream file = new FileStream(@"D:\VB\XLSX teste com NPOI\XLSX 1\Book1.xlsx", 
     FileMode.Open, FileAccess.Read))
{
    hssfwb = new XSSFWorkbook(file);
    file.Close();
}

ISheet sheet = hssfwb.GetSheetAt(0);
IRow row = sheet.GetRow(0);

ICell cell = row.CreateCell(5);
cell.SetCellValue("test");
cell.CellStyle.FillBackgroundColor = IndexedColors.BrightGreen.Index;
cell.CellStyle.FillPattern = FillPattern.SolidForeground;

using (FileStream file = new FileStream(@"D:\VB\XLSX teste com NPOI\XLSX 1\Book1ee22.xlsx", 
     FileMode.Create, FileAccess.Write))
{
    hssfwb.Write(file);
    file.Close();
}

Version de NPOI: 2.1.3.1 J'ai ce code et il change la couleur pour toute la feuille et non seulement la cellule... Quelle est la manière appropriée de changer la couleur de remplissage de la cellule ?


Voici le code fonctionnel, basé sur la réponse marquée comme correcte ci-dessous :

XSSFWorkbook hssfwb;
        using (FileStream file = new FileStream(@"D:\Copy D\Tech\VB\XLSX teste com NPOI\XLSX 1\Book1.xlsx", FileMode.Open, FileAccess.Read))
        {
            hssfwb = new XSSFWorkbook(file);
            file.Close();
        }

        ISheet sheet = hssfwb.GetSheetAt(0);
        IRow row = sheet.GetRow(0);

        ICellStyle testeStyle = hssfwb.CreateCellStyle();
        testeStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Medium;
        testeStyle.FillForegroundColor = IndexedColors.BrightGreen.Index;
        testeStyle.FillPattern = FillPattern.SolidForeground;

        ICell cell = row.CreateCell(5);
        cell.SetCellValue("testeeerere");
        cell.CellStyle = testeStyle;

        using (FileStream file = new FileStream(@"D:\Copy D\Tech\VB\XLSX teste com NPOI\XLSX 1\Book1ee22.xlsx", FileMode.Create, FileAccess.Write))
        {
            hssfwb.Write(file);
            file.Close();
        }

14voto

Nino Points 5504

Regardez cet exemple :

utilisation de NPOI.HSSF.UserModel;
utilisation de NPOI.SS.UserModel;
utilisation de NPOI.SS.Util;

(...)

Ligne ligne = feuille.CreateRow(0);

//styles
Font policeGras = classeur.CreateFont();
policeGras.Boldweight = (short)FontBoldWeight.BOLD;
ICellStyle styleGras = classeur.CreateCellStyle();
styleGras.SetFont(policeGras);

styleGras.BorderBottom = CellBorderType.MEDIUM;
styleGras.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.GREY_25_PERCENT.index;
styleGras.FillPattern = FillPatternType.SOLID_FOREGROUND;

for (int i = 0; i < colonnes.Length; i++)
{
    Cell cellule = ligne.CreateCell(i);
    cellule.SetCellValue(colonnes[i]);
    cellule.CellStyle = styleGras;
}

ici vous pouvez voir comment appliquer du gras, une couleur de fond et une bordure pour chaque cellule d'une ligne. Dans cet exemple colonnes est un tableau de chaînes représentant les données des colonnes; utilisez vos valeurs à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X