Я создаю xlsx-файл и хочу добавить столбчатую диаграмму, отображающую 2 значения для недели календарей.
Однако я не знаю, сколько диаграмм (в зависимости от доступных элементов) и сколько календарных недель мне нужно будет отобразить (в зависимости от периода времени, выбранного пользователем).
Создание недель и таблицы данных — не та проблема, она работает нормально, перебирая мои данные с помощью двух вложенных циклов foreach, используя setCellValueByColumnAndRow ().
Моя проблема в том, что у меня динамическое количество столбцов и динамическое количество строк.
Так что мне нужна подсказка, как перевести
$value = new PHPExcel_Chart_DataSeriesValues('Number',
'Worksheet!$C$9:$H$9',
NULL,
$numberOfWeeks);
array_push($values, $value);
во что-то вроде этого:
$value = new PHPExcel_Chart_DataSeriesValues('Number',
'Worksheet!$' . $START_COLUMN . '$' . $CURRENT_ROW . ':$' . $END_COLUMN . '$' . $CURRENT_ROW,
NULL,
$numberOfWeeks);
array_push($values, $value);
Как мне создать диаграмму и динамическое количество столбцов?
РЕДАКТИРОВАТЬ:
Во фрагменте было пропущено «!» (Спасибо Марку Баркеру). Исправлено это в моем первом посте.
Поскольку я использовал Integer-Values для перебора столбцов, мне пришлось преобразовать целое число обратно в букву. Решение для этого размещено здесь.
А пока Марк ткнул носом в функцию, встроил конечно ;-),
PHPExcel_Cell::stringFromColumnIndex()
Отсутствует !
после Worksheet
это очевидная проблема …. MS Excel заботится о таких вещах …. и отсутствует $
для абсолютных ссылок:
$value = new PHPExcel_Chart_DataSeriesValues('Number',
'Worksheet!$' . $START_COLUMN . '$' . $CURRENT_ROW . ':$' . $END_COLUMN . '$' . $CURRENT_ROW,
NULL,
$numberOfWeeks);
Но это действительно простой вопрос конкатенации строк PHP 101
Других решений пока нет …