Заключение
HotXLS не добавляет члены ThemeColor / TintAndShade к классическому фасаду XLS lxHandle. Эти члены принадлежат более новой модели стилей OOXML и не имеют реального, сохраняемого без потерь хранилища BIFF .xls. Добавление их к старому API XLS создало бы вводящий в заблуждение интерфейс: значения либо терялись бы при сохранении, либо сводились бы к приближённому цвету палитры
Классический API XLS lxHandle записывает файлы BIFF .xls. BIFF хранит цвета шрифтов, рамок и заливки через индексы палитры, а не через слоты цветов темы Office
Использование Color, ColorIndex и Workbook.Colors
Используйте
Color, когда хотите задать значение RGB. HotXLS сопоставляет это значение RGB с текущей палитрой рабочей книги. Используйте
ColorIndex, когда хотите обратиться непосредственно к слоту палитры. Используйте
IXLSWorkbook.Colors для настройки записей палитры
Цвета темы и оттенки/тени
ThemeColor и TintAndShade — концепции стилей OOXML .xlsx. Классический фасад XLS не предоставляет эти свойства, поскольку рабочая книга BIFF не имеет эквивалентного хранилища темы/оттенка, которое Excel мог бы сохранить как метаданные темы
Если исходный код использует цвета темы, а целевой файл — .xls, сначала преобразуйте комбинацию тема/оттенок в цвет RGB, затем присвойте Color или пользовательскую запись палитры. Если связь с темой должна оставаться редактируемой в Excel, используйте фасад XLSX (lxHandleX) и его свойства стилей, поддерживающие темы
Пример
Этот пример настраивает слот палитры и использует его для заливки ячейки в классической рабочей книге XLS
Workbook.Colors[8, 0] := RGB(42, 107, 191);
Workbook.Worksheets[1].Range['A1', 'D1'].Interior.ColorIndex := 8;