Выгрузка в excel с группировкой в виде дерева на php
Для работы с таким форматом рекомендую использовать phpExcel
Мне нужно было сделать такое
setCellValue(<адрес ячейки>, <значение>);
setOutlineLevel(<уровень глубины>);
setCollapsed - признак можно ли схлапывать схлопнуто или нет
Мне нужно было сделать такое
В качестве основы, я использовала информацию от сюда https://phpexcel.codeplex.com/discussions/281289
$i=2;
while($i<50)
{
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "A test".$i);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(1);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
$i++;
for($j=0;$j<5;$j++)
{
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, "B test".$i);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(2);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
$i++;
for($k=0;$k<5;$k++)
{
$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, "C test".$i);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(3);
$objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
$i++;
}
}
}
setCellValue(<адрес ячейки>, <значение>);
setOutlineLevel(<уровень глубины>);
setCollapsed - признак можно ли схлапывать схлопнуто или нет
Но тут есть ошибка, о которой писал автор, но как в этом коде его исправить, я даже не думала, я просто написала свой, который требуется по задаче. Публикую, может кому поможет для его решения..
public function wrxlsx($id_site,$id_parent,$level=0)
{
$links = $this->get_childs($id_site,$id_parent); //получить массив данных для .xlsx
if(!$links)
return;
$colNumber = $level;
$level++;
foreach($links as $l)
{
$this->curRow++;
$value = $l['name'].' -> '.$l['uri'];
$colString = PHPExcel_Cell::stringFromColumnIndex($colNumber);
$this->objPHPExcel->getActiveSheet()->setCellValue($colString . $this->curRow, $value);
$this->objPHPExcel->getActiveSheet()->getRowDimension($this->curRow)->setOutlineLevel($level);
//первый уровень не схлапываем
$this->objPHPExcel->getActiveSheet()->getRowDimension($this->curRow)->setVisible($level==1?true:false);
$this->objPHPExcel->getActiveSheet()->getRowDimension($this->curRow)->setCollapsed(true);
$this->wrxlsx($id_site,$l['id'],$level);
}
}
О том, как сохранить в файл и подключить библиотеку не пишу, это легко найти в интернете. Написала только о том, что у меня вызвало трудность найти и разобраться как работает.
Отменить "итоги в строках под данными", чтобы плюсики были вверху, что удобнее на мой взгляд. Думаю кому то будет интересно.
ОтветитьУдалить$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setShowSummaryBelow(false);
Здравствуйте и благодарю за дополнение
Удалить