0

我无法弄清楚如何将背景颜色应用于 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 正文,但无法理解哪些标签和属性定义了单元格的颜色。

谁能帮我?

4

2 回答 2

1

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

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

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

于 2018-03-26T07:25:55.220 回答
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 合并到每个单元格。

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

于 2018-03-19T10:06:24.360 回答