PHPExcel - добавление строк динамически формирует результаты БД - PullRequest
0 голосов
/ 31 января 2019

Я написал код, который генерирует только одну строку значений ячеек, возвращаемых из моей базы данных.

Я хочу, чтобы они генерировали несколько строк, начиная с 16-й строки в моем файле Excel. Он устанавливает только одну строку выбранных ячеек в строке 16, когда я хочу продолжить генерировать все возвращаемые результаты, такие как 16-й, 17-й, 18-йстрока и так далее ..

Как это исправить?

Это мой код:

     phpExcelObject = $this->get('phpexcel')->createPHPExcelObject($filePath);

    $copyFrom= "17";
    $activeSheet = $phpExcelObject->getActiveSheet();

    $rows = $this->get('app')->getData();

    $row = 16;

    if($rows) {

        foreach ($rows as $row) {

            $activeSheet->insertNewRowBefore($copyFrom, 1);
            $activeSheet->duplicateStyle($activeSheet->getStyle('A16'.($copyFrom+1)), 'A16'.$copyFrom);
            $lastColumn = $phpExcelObject->getActiveSheet()->getHighestColumn();
            $rangeFrom = 'A'.($copyFrom+1).':'.$lastColumn.($copyFrom+1);
            $activeSheet->fromArray($activeSheet->rangeToArray($rangeFrom), null, 'A'.$copyFrom);

            $phpExcelObject->setActiveSheetIndex(0)
                ->setCellValue('G7',  $row[0])
                ->setCellValue('H10', $row[1])
                ->setCellValue('G8',  $row[2])
                ->setCellValue('A17', $row[3]);

            $row++;

        }

    }

    $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel2007');
    $response = $this->get('phpexcel')->createStreamedResponse($writer);
    $dispositionHeader = $response->headers->makeDisposition(
        ResponseHeaderBag::DISPOSITION_ATTACHMENT,
        'the-file.xlsx'
    );
    $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
    $response->headers->set('Cache-Control', 'maxage=1');
    $response->headers->set('Content-Disposition', $dispositionHeader);

    return $response;
}

Я пробовал другие предложения, но это не работает дляя.

...