Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
openTBS/PHP-如何创建堆叠条形图?_Php_Opentbs - Fatal编程技术网

openTBS/PHP-如何创建堆叠条形图?

openTBS/PHP-如何创建堆叠条形图?,php,opentbs,Php,Opentbs,我正在尝试创建一个堆叠条形图,如下图所示,嵌入到PowerPoint模板的幻灯片中。当我运行下面的脚本时,我得到了一个错误 TinyButStrong错误OpenTBS插件:(ChartChangeSeries)“chart3”: 在图表“chart3”中找不到系列“series 3”。过程 结束,除非将NoErr属性设置为true 就我所能看到的,我的系列和x轴的两个标签中的每一个都有明确的定义 我哪里出错了?如何解决此错误? 您的代码似乎还可以。问题可能来自系列3,它可能没有像您预期的那

我正在尝试创建一个堆叠条形图,如下图所示,嵌入到PowerPoint模板的幻灯片中。当我运行下面的脚本时,我得到了一个错误

TinyButStrong错误OpenTBS插件:(ChartChangeSeries)“chart3”: 在图表“chart3”中找不到系列“series 3”。过程 结束,除非将NoErr属性设置为true

就我所能看到的,我的系列和x轴的两个标签中的每一个都有明确的定义

我哪里出错了?如何解决此错误?


您的代码似乎还可以。问题可能来自系列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数组中,我发现我的一个密钥的名称不正确。更改数组密钥名称后,我修改了代码并获得了结果。我将发布解决方案的代码。