Пользовательский цвет для ICellStyle FillForegroundColor, чем предоставленные именованные цвета
мы недавно начали использовать компоненты NPOI.
у нас возникли проблемы с установкой FillForegroundColor свойства ICellStyle.
ICellStyle HeaderCellStyle = xssfworkbook.CreateCellStyle();
HeaderCellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.RED.index;
FillForegroundColor ожидает типа short.
Как установить другой цвет, а не использовать цвета в HSSFColor.
нам нужно установить в "RGB192:0:0"
и как это сделать для свойства ICellStyle FillForegroundColor
Colud кто-то помогает нам каким-то примером?
5 ответов
Я нашел решение самостоятельно. Пожалуйста, см. ниже код
byte[] rgb = new byte[3] { 192, 0, 0 };
XSSFCellStyle HeaderCellStyle1 = (XSSFCellStyle)xssfworkbook.CreateCellStyle();
HeaderCellStyle1.SetFillForegroundColor(new XSSFColor(rgb));
извините, и еще раз.
Color SuperColor = Color.FromArgb(192, 0, 0);
styleH.FillForegroundColor = GetXLColour(hssfworkbook, SuperColor);
private short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color SystemColour)
{
short s = 0;
HSSFPalette XlPalette = workbook.GetCustomPalette();
NPOI.HSSF.Util.HSSFColor XlColour = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);
if (XlColour == null)
{
if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)
{
if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)
{
NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE = 64;
NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1;
XlColour = XlPalette.AddColor(SystemColour.R, SystemColour.G, SystemColour.B);
}
else
{
XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);
}
s = XlColour.GetIndex();
}
}
else
s = XlColour.GetIndex();
return s;
}
для людей, приезжающих сюда в 2016 году, вы можете найти много полезной цветов здесь:
nameStyle.Color = NPOI.HSSF.Util.HSSFColor.BlueGrey.Index;
Whereby BlueGrey-это цвет, который вы ищете.
вот эквивалентный ответ VB, мне пришлось преобразовать это, поэтому, возможно, это сэкономит кому-то работу, если они ее найдут:
'my workbook is from a template that already contains some header data
Dim fs As New FileStream(HttpContext.Current.Server.MapPath("..\_ExcelTemplates\filename.xlsx"), FileMode.Open, FileAccess.Read)
Dim workbook As IWorkbook
workbook = New XSSFWorkbook(fs)
Dim sheet_stats As ISheet = workbook.GetSheet("Stats")
'style
Dim rgb_grandTotalRow_fg() As Byte = New Byte() {197, 217, 241} 'lightish blue
Dim style_grandTotalRow As XSSFCellStyle = workbook.CreateCellStyle()
style_grandTotalRow.SetFillForegroundColor(New XSSFColor(rgb_grandTotalRow_fg)) 'XSSFCellStyle only for other use (FillForegroundColor = IndexedColors.LightTurquoise.Index)
style_grandTotalRow.FillPattern = FillPattern.SolidForeground
'apply the style to a cell
Dim rowHdr As IRow = sheet_stats.GetRow(2)
Dim cell As ICell
cell = Row.CreateCell(1) 'create cell at col index 1
cell.CellStyle = style_grandTotalRow
cell.SetCellValue("TEST")
изменить цвет шрифта
пример..
ICellStyle style0 = hssfworkbook.CreateCellStyle();
IFont font0 = hssfworkbook.CreateFont();
font0.Color = NPOI.HSSF.Util.HSSFColor.RED.index;
style0.SetFont(font0);
for (int i = 0; i < cell.Length; i++)
{
cell[i].CellStyle = style0;
}
--
Я японец, не могу по-английски. извиняюсь.