openTBS/PHP-如何创建堆叠条形图?
我正在尝试创建一个堆叠条形图,如下图所示,嵌入到PowerPoint模板的幻灯片中。当我运行下面的脚本时,我得到了一个错误 TinyButStrong错误OpenTBS插件:(ChartChangeSeries)“chart3”: 在图表“chart3”中找不到系列“series 3”。过程 结束,除非将NoErr属性设置为true 就我所能看到的,我的系列和x轴的两个标签中的每一个都有明确的定义 我哪里出错了?如何解决此错误?openTBS/PHP-如何创建堆叠条形图?,php,opentbs,Php,Opentbs,我正在尝试创建一个堆叠条形图,如下图所示,嵌入到PowerPoint模板的幻灯片中。当我运行下面的脚本时,我得到了一个错误 TinyButStrong错误OpenTBS插件:(ChartChangeSeries)“chart3”: 在图表“chart3”中找不到系列“series 3”。过程 结束,除非将NoErr属性设置为true 就我所能看到的,我的系列和x轴的两个标签中的每一个都有明确的定义 我哪里出错了?如何解决此错误? 您的代码似乎还可以。问题可能来自系列3,它可能没有像您预期的那
您的代码似乎还可以。问题可能来自系列3,它可能没有像您预期的那样在内部命名。在电子表格查看器中仔细检查名称,末尾不得有空格。您也可以尝试使用按钮«修改Ms Excel中的数据» 不过,您可以使用新的OpenTBS命令返回图表的数据。这是有效的,但它是稳定的 命令:
$data = $TBS->PlugIn(OPENTBS_CHART_INFO, 'chart3');
var_dump($data);
我为每个系列修改了$NewValues数组,使之成为两个元素的数组,第一个元素是x轴值,第二个元素是y轴值。x轴值是两个值的数组(“按时关闭”、“延迟关闭”),y轴是两个元素的数组(一个元素为零,另一个为该x值的值(按时关闭或延迟关闭) 输出图 示例
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
(int)$ecdClosureStatus['ClosedOnTime'],
0
));
$ecdClosureStatus = getClosureChartData('ECD');
$ChartNameOrNum = 'chart3'; // Title of the shape that embeds the chart
$ChartRef = 'chart3'; // Title of the shape that embeds the chart
$SeriesNameOrNum = 'Series 1';
$NewLegend = "Closed On Time";
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
(int)$ecdClosureStatus['ClosedOnTime'],
0
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 2';
$NewLegend = '1-30 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['OneToThirtyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 3';
$NewLegend = ' 31-60 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['ThirtyOneToSixtyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 4';
$NewLegend = '61-90 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['SixtyOneToNinetyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 5';
$NewLegend = ' >90 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['MoreThanNinetyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
解决方案代码
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
(int)$ecdClosureStatus['ClosedOnTime'],
0
));
$ecdClosureStatus = getClosureChartData('ECD');
$ChartNameOrNum = 'chart3'; // Title of the shape that embeds the chart
$ChartRef = 'chart3'; // Title of the shape that embeds the chart
$SeriesNameOrNum = 'Series 1';
$NewLegend = "Closed On Time";
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
(int)$ecdClosureStatus['ClosedOnTime'],
0
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 2';
$NewLegend = '1-30 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['OneToThirtyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 3';
$NewLegend = ' 31-60 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['ThirtyOneToSixtyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 4';
$NewLegend = '61-90 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['SixtyOneToNinetyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
$SeriesNameOrNum = 'Series 5';
$NewLegend = ' >90 Days Late';
$NewValues = array(array('Closed On Time', 'Closed Late'), array(
0,
(int)$ecdClosureStatus['MoreThanNinetyDaysLate']
));
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);
感谢您的回复。在我的$ecdClosureStatus数组中,我发现我的一个密钥的名称不正确。更改数组密钥名称后,我修改了代码并获得了结果。我将发布解决方案的代码。