myesn

myEsn2E9

hi
github

NPOI: EXCEL(HSSF)のカスタムセルの背景色をエクスポートする

[! 重要]

  1. 異なる色は異なるインデックスに設定する必要があります。そうしないと上書きされます。
  2. インデックスの範囲は限られており、カラーパレットでカスタム色を事前に設定する必要があります。コメントに説明があります。
var hssfworkbook = new HSSFWorkbook();
ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");

//背景を塗りつぶす
ICellStyle style1 = hssfworkbook.CreateCellStyle();

#region パレットを使用して、hexベースのカスタムカラーを生成する

var palette = hssfworkbook.GetCustomPalette();
// hexからargbへ
// ColorTranslator静的クラス:
// .net frameworkでは、ネイティブdllを参照に追加し、using System.Drawing;をインポートします。
// .net(core)では、nugetからSystem.Drawing.Commonパッケージを追加し、using System.Drawing;をインポートします。
var argb = ColorTranslator.FromHtml("#ff0303");
// インデックス値は、内部でindex-8として使用されます。差分はnum >= 0 && num < 56を満たす必要があります。
var customBackgroundColorIndexInPalette = (short)8;
palette.SetColorAtIndex(customBackgroundColorIndexInPalette, argb.R, argb.G, argb.B);

#endregion

//セルの背景色を設定するには、FillForegroundColor + FillPatternの2つのフィールドを使用する必要があります。FillBackgroundColorフィールドでは背景色を設定できません。
//前景色と塗りつぶしパターンを設定し、前景色はパレットの指定されたインデックスのRGB色を使用します。
style1.FillForegroundColor = customBackgroundColorIndexInPalette; //NPOI.HSSF.Util.HSSFColor.Blue.Index;
style1.FillPattern = FillPattern.SolidForeground;

//位置0,0のセルを作成し、セルの内容とスタイルを設定する
var cell00 = sheet1.CreateRow(0).CreateCell(0);
cell00.SetCellValue("こんにちは");
cell00.CellStyle = style1;

カスタム RGB カラーのパレット:

// Excelワークブックのカスタムパレット内のカスタムカラーのインデックス
private static readonly short _color1IndexInWorkbookCustomPalette = 8;
private static readonly short _color2IndexInWorkbookCustomPalette = 9;
private static readonly short _color3IndexInWorkbookCustomPalette = 10;

// Excelワークブックのカスタムパレットにすべてのカスタムカラーを設定する
private static void SetAllColorIndexOnWorkbookCustomPalette(HSSFWorkbook workbook)
{
    SetColorIndexOnWorkbookCustomPalette(workbook, _color1IndexInWorkbookCustomPalette, ConfigHelper.Setting.Color1);
    SetColorIndexOnWorkbookCustomPalette(workbook, _color2IndexInWorkbookCustomPalette, ConfigHelper.Setting.Color2);
    SetColorIndexOnWorkbookCustomPalette(workbook, _color3IndexInWorkbookCustomPalette, ConfigHelper.Setting.Color3);
}
// Excelワークブックのカスタムパレットの指定されたインデックスに、hex形式のカスタムカラーを設定する
private static void SetColorAtIndexOnWorkbookCustomPalette(HSSFWorkbook workbook,short rgbColorIndexInPalette, string hexColor)
{
    if (rgbColorIndexInPalette < 8 || rgbColorIndexInPalette > 56) throw new IndexOutOfRangeException(nameof(rgbColorIndexInPalette));

    var palette = workbook.GetCustomPalette();
    var argb = ColorTranslator.FromHtml(hexColor);
    palette.SetColorAtIndex(rgbColorIndexInPalette, argb.R, argb.G, argb.B);
}
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。