Какие цвета разрешены в SpreadsheetGear?

При установке внутреннего цвета ячейки я обнаружил, что некоторые цвета разрешены, а некоторые игнорируются. Например, это работает (где ws — объект IWorksheet):

ws.Cells[r, c].Interior.Color = Colors.LightPink;

но при попытке этого цвета

ws.Cells[r, c].Interior.Color = Color.FromArgb(255, 255, 136, 136);

в результате получается ячейка с исходным белым фоном. Как будто цвет никогда не менялся. SpreadSheetGear позволяет использовать только определенные цвета?


person Der Wolf    schedule 18.08.2017    source источник
comment
Я только что протестировал этот код, но не воспроизводю описанное вами поведение. В обоих случаях устанавливается и отображается ожидаемый цвет (белый фон во второй строке кода отсутствует). Тем не менее, я не знаю окружающего контекста вокруг вашего тестового примера, поэтому, возможно, не настраиваю свой собственный, как ваш. Можете ли вы уточнить свой тестовый пример, например: вы просматриваете этот результирующий файл в элементе управления WorkbookView или сохраняете в файл (XLS / XLSX / XLSM?) и просматриваете в Excel?   -  person Tim Andersen    schedule 19.08.2017
comment
Привет, Тим. Спасибо за ваш ответ. Ответ - последний... Я создаю электронную таблицу, которую позже просматриваю в Excel.   -  person Der Wolf    schedule 21.08.2017
comment
Я до сих пор не могу воспроизвести то, что вы описываете. Пожалуйста, предоставьте более конкретный и полный тестовый пример.   -  person Tim Andersen    schedule 22.08.2017


Ответы (1)


Через несколько лет снова наткнувшись на эту проблему, я смог ее решить. Список цветов, которые вы ограничены, можно найти, проверив свойство Colors объекта IWorkbook:

SpreadsheetGear.IWorkbook wb = SpreadsheetGear.Factory.GetWorkbook();

for (int i = 0; i < wb.Colors.Count; i++)
    Debug.WriteLine("[{0}] {1}", i, wb.Colors[i].ToArgb().ToString("x"));

Если нужного вам цвета нет в этом списке, SpreadsheetGear произвольно выберет другой цвет из палитры. Тем не менее, вы можете использовать цвета, которые хотите, в палитре. Например:

wb.Colors[wb.Colors.Count - 1] = SpreadsheetGear.Colors.Orange;
person Der Wolf    schedule 12.01.2021