Заполните ячейки Excel цветами, используя метод экспорта Acumatica - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь программно заполнить ячейки Excel цветами, используя метод экспорта, который я нашел в этой записи .Я заметил, что библиотека содержит метод AddFill со следующими параметрами AddFill(int startRow, int startColumn, int endRow, int endColumn, string fgColor, string bgColor, [bool doNotOverride = false]), но все, что я установил как fgColor и / или bgColor, делает цвет ячейки полностью черным.Я пробовал "красный", "красный", "красный", "# FF0000", "(255,0,0)" и всегда один и тот же результат.Было бы очень полезно, если бы кто-нибудь знал, как это сделать, используя библиотеку Acumatica, чтобы заполнить ячейку цветом

1 Ответ

0 голосов
/ 11 декабря 2018

В библиотеках Acumatica есть служебный метод PX.Export.Excel.Core.Utils.RgbToColor для преобразования значения из целочисленного значения ARGB класса .Net Color:

AddFill(startRow, startColumn, endRow , endColumn,
        PX.Export.Excel.Core.Utils.RgbToColor(System.Drawing.Color.AliceBlue.ToArgb()),
        PX.Export.Excel.Core.Utils.RgbToColor(System.Drawing.Color.FromArgb(255, 0, 0).ToArgb()));

Этот метод является общедоступным, поэтому вы можете использовать его повторно.это, но в случае, если вам нужно накатить свою собственную, вот реализация:

public static string RgbToColor(int rgb)
{
    if (rgb == 0) return "00000000";
    return rgb.ToString("x");
}

В основном ожидаемый формат может быть достигнут путем вызова метода ToString целочисленного объекта с параметром x.Я считаю, что это возвращает целочисленное значение в форме шестнадцатеричной строки.

Подробнее об этом формате можно узнать здесь: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#XFormatString

Жестко закодированная строка «00000000» - это особый случай со значением «без цвета» для Excel.

...