PHPExcel提供了一个非常简单和有用的example,用于创建包含基于一小部分数据的简单散点图的Excel文件。但是,问题在于这个例子为其x轴使用了规则间隔的“字符串”值(Q1-Q4)。
我要做的是创建一个散布图,其中包含不规则间隔的数字x轴值,所以我修改了这样的代码:
$objWorksheet->fromArray(
array(
array('', 2010, 2011, 2012),
array('0', 12, 15, 21),
array('10', 56, 73, 86),
array('30', 52, 61, 69),
array('70', 30, 32, 0),
)
);
$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012
);
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4), // 0 to 70
);
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4),
);
注意第一个数据系列(2010)如何正确绘制,但其他两个则没有。我还注意到,如果你选择了2010年的数据系列,它确实同时定义了y值和x值:
但是,当您单击任何其他数据集时,您可以看到只定义了y值:
我觉得这对我来说是一个相对简单的疏忽,但遗憾的是,我一直无法找到问题。我担心这种类型的东西可能需要PHPExcel.php文件中的黑客攻击,但是我想先在社区中运行它,然后再搞乱源文件。
提前感谢任何建议......
答案 0 :(得分:0)
想出来了!
事实证明它确实很简单,但PHPExcel确实需要更新他们的示例文件。
我改变了这个:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4), // 0 to 70
);
对此:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A$2:$A$5', NULL, 4)
);
换句话说,包含x轴系列对象的数组需要与包含y轴系列对象的数组的长度相同。令人困惑的是,x轴阵列中填充了多个相同的x轴对象。
一个简单的问题,但令人沮丧。
干杯!