Gerar arquivo excel com PHP usando a classe phpSpreadSheet
23/10/2018
0
Meus caros boa noite! Trabalho recentemente em um projeto que exige a geração de arquivos excel (xlsx), consegui fazer funcionar perfeitamente, porem o arquivo que a classe gera e salvo na pasta no servidor, o que é inviável. Quando adiciono os cabeçalhos para fazer o Download do arquivo, este e gerado com erro (corrompido).
Gostaria de saber se alguém pode me ajudar com isso?
meu codigo:
Gostaria de saber se alguém pode me ajudar com isso?
meu codigo:
<?php require_once './app/config/config.inc.php'; require_once './app/composer/vendor/autoload.php'; use PhpOffice\\\\PhpSpreadsheet\\\\Spreadsheet; use PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx; $sql = new Read(); $sql->FullRead("SELECT EQ.patrimonio, C.descricao equipamento, F.nome_fabricante fabricante, EQ.serie, M.modelo, L.local FROM tb_sys004 EQ JOIN tb_sys008 L ON L.id = EQ.id_local JOIN tb_sys018 F ON F.id_fabricante = EQ.fabricante JOIN tb_sys022 M ON M.id_modelo = EQ.modelo JOIN tb_sys003 C ON C.id = EQ.id_categoria AND EQ.id_local = 1 order by EQ.patrimonio"); $spreadsheet = new Spreadsheet(); //instanciando uma nova planilha $sheet = $spreadsheet->getActiveSheet(); //retornando a aba ativa $sheet->setCellValue('A1',"Patrimonio"); $sheet->setCellValue('B1',"Equipamento"); $sheet->setCellValue('C1',"Fabricante"); $sheet->setCellValue('D1',"Serie"); $sheet->setCellValue('E1',"Modelo"); $sheet->setCellValue('F1',"local"); $i=1; foreach ($sql->getResult() as $res): $sheet->setCellValue('A'.$i, $res['patrimonio']); $sheet->setCellValue('B'.$i, $res['equipamento']); $sheet->setCellValue('C'.$i, $res['fabricante']); $sheet->setCellValue('D'.$i, $res['serie']); $sheet->setCellValue('E'.$i, $res['modelo']); $sheet->setCellValue('F'.$i, $res['local']); $i++; endforeach; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="myfile.xlsx"'); header('Cache-Control: max-age=0'); $writer = \\\\PhpOffice\\\\PhpSpreadsheet\\\\IOFactory::createWriter($sheet, 'Xlsx'); $writer->save('php://output');
Leandro Costa
Curtir tópico
+ 0
Responder
Post mais votado
26/10/2018
Fala Leandro, tranquilo?
Cara, tenta antes da sua última linha adicionar o código "ob_end_clean()", ficando assim:
Vlw
Cara, tenta antes da sua última linha adicionar o código "ob_end_clean()", ficando assim:
ob_end_clean() $writer->save(''php://output'');
Vlw
Pablo Carvalho
Responder
Clique aqui para fazer login e interagir na Comunidade :)