Как применить цвет фона к ячейке Excel в OpenTBS?

Я не могу понять, как применить цвет фона к ячейке в OpenTBS.

Я пробовал синтаксис Word, но он не работал.

[row.cell.val][row.cell.bg;att=w:shd#w:fill]

Код на PHP (упрощенный)

$rs = [
    // ... 
    'cell' => [
        'val' => 5,
        'bg'  => 'efefef',
    ],
// ...
];

$TBS->MergeBlock('row', $rs);

Я заглянул внутрь тела XML документа Excel, но не смог понять, какие теги и атрибуты определяют цвет ячейки.

Может кто-нибудь мне помочь?

2 ответа

Решение

Довольно сложно изменить цвет фона ячейки в рабочей книге XLSX с помощью OpenTBS (или другого инструмента), поскольку эта информация хранится в единственном определении стиля в дополнительном подфайле. xl/styles.xml и сложным образом.

Поэтому при изменении соответствующего стиля вы также измените цвет всех других ячеек, имеющих этот стиль. В XLSX нет другого способа сохранить цвет фона ячейки. (это отличается от DOCX, где вы можете хранить информацию в свойстве ячейки).

Поэтому я предлагаю использовать условное форматирование Excel для этой цели.

Цвет фона ячейки Excel XML хранится в стиле ячейки, в <Styles> раздел и передается по каждой ячейке ss:StyleID,

Пример:

<!-- "s62" is the style id" -->
<Style ss:ID="s62">
   <!-- Interior = Background -->
   <Interior ss:Color="#FFFF00" ss:Pattern="Solid"/>
</Style>

...

<!-- Using "s62" style which says yellow background -->
<Cell ss:StyleID="s62"> 
   <Data ss:Type="String">foobar</Data>
</Cell>

Если у вас есть фиксированный список цвета фона, вы можете вручную поместить их все в <Styles>, сопоставьте цвет с идентификатором стиля в php и объедините идентификатор стиля с каждой ячейкой.

Если у вас нет фиксированного списка цветов или форматирование электронной таблицы является сложным, вам, возможно, придется сначала создать и объединить список стилей.

Другие вопросы по тегам