Как группировать строки по полю в PHPExcel - PullRequest
0 голосов
/ 04 апреля 2019

see images here

У меня проблема при создании файлов Excel с библиотекой phpExcel.

Я хочу создать группы по определенным строкам на основе столбца продаж (с тем же названием продаж).

Я создал файл вручную, используя функцию «Итого» на вкладке «Данные» в Excel.

Возможно ли, что phpexcel имеет такую ​​функцию?

Вы можете увидеть образец файла, который я имею в виду на ссылке / изображении, которое я загрузил.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Используя PHPExcel, вы можете использовать методы:

  • setOutlineLevel ($ level) // уровень текущей строки
  • setVisible (false) // показать или скрыть группу
  • setCollapsed (true) // добавить коллапс в группу (как показано на рисунке выше)

Здесь необходимо определить условие группы, например:

Мы предполагаем, что файл Excel уже создан с помощью PHPExcel и теперь вы собираетесь снова прочитать файл для группировки строк.

Сначала давайте прочитаем столбец C, содержащий имя продавца, и сохраним их внутри $ salemans :

$salesmans = array(); 

/*
the output of $salesmans seems to be something like :
[0] ==> "Abdul Karim",
[1] ==> "Apan Total",
[2] ==> ""Ari Total
*/

Массив $ salesman должен иметь различное значение, поэтому при попытке вставить внутри массива проверить, если текущее значение не существует уже в $ продавцы.

Пример:

$salesmans=array();
if (!in_array($currentSalesman, $salesmans))
{
   $array[] = $value; 
}

Здесь мы собираемся установить уровень каждой строки, получая значение текущего продавца с помощью ключа в $ salesmans

Внимание: пожалуйста, попробуйте изменить этот раздел, потому что я не получаю как вы управляете извлечением строк. Я просто делаю код более понятным для понимания

for ($row = 0; $row <= 10000; ++$row) { 
    $currentsalesman = $row['c']; // 
    $keylevel = array_search($currentsalesman, $salesmans);// this will return the key in $salesmans array
    $objPHPExcel->getActiveSheet()
        ->getRowDimension($row)
            ->setOutlineLevel($keylevel) // set here the level .
            ->setVisible(false)
            ->setCollapsed(true);
}
0 голосов
/ 04 апреля 2019

Вы можете сгруппировать строки следующим образом

$objPHPExcel->getActiveSheet()->getRowDimension('5')->setOutlineLevel(1);

Для получения более подробной информации вы можете посетить здесь .Вы также можете перейти здесь и здесь для рабочих примеров

...