PHPExcel - установить значения ячеек из массива - PullRequest
0 голосов
/ 24 января 2019

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

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

Мой код:

Из моего сервиса ..

 public function getExport($account)
{

    $all = $this->em->getRepository('AppBundle:App')->findBy([
        'account' => $account
    ]);

    $rows = [];

    $rows[] = [
        "client",
        "payer_name",
        "payer_info"
    ];

    foreach ($all as $row) {
        $client = $row->getAccount();
        $payerName = $row->getName();
        $payerInfo = $row->getInfo();

        if (empty($rows[$client])) {
            $rows[] = [
                $client,
                $payerName,
                $payerInfo
            ];
        } else {
            $rows[$client][1][] = $payerInfo;
        }
      };

    return $rows;
}

И в контроллере я подготовил логику для экспорта ..

    public function downloadInvoice($account) {

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

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

    $phpExcelObject->setActiveSheetIndex(0)
    ->setCellValue('A17', 'Here need to go client')
    ->setCellValue('E17', 'Here needs to go payer info etc...')

    $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;

}

1 Ответ

0 голосов
/ 24 января 2019

Итак, я сделал это:

 if($rows) {
        foreach ($rows as $row) {
            $phpExcelObject->setActiveSheetIndex(0)
                ->setCellValue('A17', $row[0])
                ->setCellValue('E17', $row[1])
                ->setCellValue('F17', $row[2])
                ->setCellValue('G17', $row[3])
                ->setCellValue('H17', $row[4]);
        }
    }

В конце концов я обнаружил, что это очень легко.

...