我无法弄清楚如何在OpenTBS中将背景颜色应用于单元格。
我已经尝试过Word的语法,但它没有用。
$rs = [
// ...
'cell' => [
'val' => 5,
'bg' => 'efefef',
],
// ...
];
$TBS->MergeBlock('row', $rs);
PHP代码(简化)
sudo apt-get install virtualbox-guest-utils
我查看了excel文档的XML主体,但无法理解哪些标记和属性定义了单元格的颜色。
任何人都可以帮助我吗?
答案 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合并到每个单元格。
如果您没有固定的颜色列表,或者电子表格的格式很复杂,您可能必须先创建并合并样式列表。