PHPExcel图表X轴刻度线之间

问题描述

我正在处理一个旧脚本,但我遇到了一个似乎没有记录的配置问题。我有一个动态创建的条形图。条是垂直的。除了 X 轴上的条形位置外,一切都很好。第一个和最后一个是半截断的。生成电子表格后,我可以轻松修复它。我单击 X 轴并将位置切换到“在刻度线之间”而不是“在刻度线上”。我在任何形式的 PHPExcel 文档中都找不到任何用于将 X 轴的位置设置为“之间”而不是“开”的内容。是否存在此设置?

解决方法

PHPExcel 已被 PHPSpreadsheet 取代,但存在无法从 PHPExcel 更改为 PHPSpreadsheet 的情况。 对于 X 轴,必须设置的选项是“crossBetween”。 PHPExcel 不会使这成为可自定义的选项。它在 Charts.php 中硬编码,值为“midCat”。该设置将第一个条形直接放置在 Y 轴下方,并将最后一个条形悬挂在图表的右侧。每个条都被切断。要将条形置于刻度之间,请编辑 Charts.php 并将“midCat”的条目更改为“之间”。您应该只在文件中找到一次“midCat”。这会将所有图表硬编码到刻度之间。如果您希望它恢复原状,请将其改回原状。 正确的解决方法是将此选项设为您可以更改的选项。这需要编辑多个文件。 Axis 对象需要 cross_between 选项。然后,需要一个 setter 来更新该选项。作者需要从该选项中提取而不是对值进行硬编码。图表可让您获得 X 轴,但一旦更新选项,您便无法设置它。因此,您需要为图表的 X 轴设置一个 setter。然后,您可以创建图表,获取 X 轴,更改 crossBetween 值,并在图表中设置更新的轴。