如何将背景颜色应用于 OpenTBS 中的 Excel 单元格?

How to apply background color to the Excel cell in 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);

我查看了 excel 文档的 XML 正文,但无法理解哪些标签和属性定义了单元格的颜色。

谁能帮帮我?

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 中的样式 ID,并将样式 ID 合并到每个单元格。

如果您没有固定的颜色列表,或者如果电子表格的格式很复杂,您可能需要先创建并合并样式列表。

使用 OpenTBS(或其他工具)更改 XLSX 工作簿中单元格的背景颜色非常困难,因为此信息存储在额外的单个样式定义中 sub-file xl/styles.xml并且以一种复杂的方式。

所以当修改相应的样式时,您也会更改具有该样式的所有其他单元格的颜色。在 XLSX 中没有其他方法可以存储单元格的背景颜色。 (这与 DOCX 不同,您可以在单元格 属性 中存储信息)。

所以我的建议是为此目的使用 Excel 条件格式。