Fórum Gerar arquivo excel com PHP usando a classe phpSpreadSheet #598152
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
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)