我创建了一个包含堆积条形图的Excel工作表 . 现在我想在第一个栏中没有颜色,但它仍然是蓝色的 . 代码如下所示:
$chart->add_series(
categories => [ 'Sheet1', 1, $counter, 0, 0 ],
values => [ 'Sheet1', 1, $counter, 3, 3 ],
name => 'Waiting_time',
fill => { none => 1 },
border => { none => 1 },
);
我用的是Excel::Writer::XLSX的0.5版
谢谢你的帮助 .
2 回答
所以,把我相当冗长的评论变成答案 .
Excel :: Writer :: XLSX中似乎缺少某些内容 .
如果在Excel的图表属性窗口中查看XLSX文件,您会注意到填充颜色为“蓝色”,但边框设置为“无” . 这很好,但你没有注意到它,因为你看不到边框丢失或者它与填充颜色相同 .
无论如何,填充似乎不起作用 . 我检查了Excel :: Writer :: XLSX生成的XLSX存档中的chart.xml,并将其与我在Excel中将其更改为“no fill”并保存的地方进行了比较 . Excel创建了很多开销,但归结为:
我们可以清楚地看到应该有一个
noFill
元素 .现在,如果我们查看Excel::Writer::XLSX::Chart中的代码,就会有一个名为
_write_sp_pr
的方法 . 这使得图表很有用 . 它依次调用两个方法,一个用于行,一个用于填充 .第二个,
_write_a_ln
,照顾none => 1
:这很棒 . 所以没有线 . 但是在哪里检查填充颜色?
事实证明,没有 . 如果没有颜色设置,则省略 . 但这导致Excel使用默认颜色,该颜色必须为蓝色 .
要解决此问题,请尝试以下monkeypatch . 将这些东西添加到程序的顶部,用图表创建XLSX文件 . 它将照顾无填充 . 它是来自原始模块代码的完整子
_write_sp_pr
,带有一些额外的逻辑混合它 .这里有一些代码可以快速尝试:
当然,这只是一个快速而肮脏的解决方案 . 我建议为该模块编写一个错误报告,并将此问题/答案作为作者的参考 .
正如@simbabque所说,这是一个错误 .
我已经在Github上的主分支上修复了它(commit f4e4191e) .
它计划在0.51发布,可能会在接下来的两周内发布 .
Update :已在Excel :: Writer :: XLSX的0.51版本中修复 .