Ошибка цвета шрифта ячейки NPOI?

Я пытаюсь прочитать цвет шрифта ячейки Excel, используя NPOI 2.2.1 или 2.1.3.1. Неважно, какой цвет шрифта. NPOI всегда говорит, что это 8 (черный). Фрагмент кода ниже

    IWorkbook workbook = WorkbookFactory.Create(new FileStream(txtFileName.Text, FileMode.Open, FileAccess.Read));
    ISheet worksheet = workbook.GetSheet("sheet1");
    IRow row = worksheet.GetRow(0);
    lblFontColor.Text = row.GetCell(0).CellStyle.GetFont(workbook).Color.ToString();

Это ошибка или я что-то не так делаю?

Обновление: Это кажется проблемой только при чтении файлов.xlsx, а не старых файлов.xls

1 ответ

Вы можете установить любой цвет фона шрифта:

     hstyle =(XSSFCellStyle) wb.CreateCellStyle();
                color = new XSSFColor(new byte[] { 191,191,191});
                hstyle.VerticalAlignment = VerticalAlignment.Center;
                hstyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                hfont = (XSSFFont)wb.CreateFont();
                hfont.FontHeightInPoints = 12;
                hfont.FontName = "Calibri";
                hfont.Boldweight = (short)FontBoldWeight.Bold;
                hfont.SetColor(color);
                hstyle.SetFont(hfont);
       crow = sheet.CreateRow(rowindex);
     ccel = crow.CreateCell(0);
                ccel.SetCellValue(Title);
                ccel.CellStyle = hstyle;

Вы можете получить цвет шрифта как IColorили как RGB (byte[3]), получив XSSFFont а также XSSFColor, или же HSSFFont а также HSSFColor:

private static byte[] GetFontColourRGB(ICell cell)
{
    IWorkbook workbook = cell.Row.Sheet.Workbook;
    IFont font = cell.CellStyle.GetFont(workbook);
    if (font is XSSFFont)
    {
        return (font as XSSFFont).GetXSSFColor().RGB;
    } else if (font is HSSFFont && workbook is HSSFWorkbook)
    {
        return (font as HSSFFont).GetHSSFColor(workbook as HSSFWorkbook).RGB;
    } else
    {
        return null;
    }
}

Учитывая значение RGB, вы можете использовать таблицу соответствия для имен цветов.

Другие вопросы по тегам