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

时间:2018-03-18 02:40:46

标签: opentbs tinybutstrong

我无法弄清楚如何在OpenTBS中将背景颜色应用于单元格。

我已经尝试过Word的语法,但它没有用。

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

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

PHP代码(简化)

sudo apt-get install virtualbox-guest-utils

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

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

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

因此,在修改相应样式时,您还将更改具有此样式的所有其他单元格的颜色。 XLSX中没有其他方法可以存储单元格的背景颜色。 (不同的是DOCX,您可以将信息存储在单元格属性中)。

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

答案 1 :(得分:0)

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合并到每个单元格。

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