When generating the PhpExcel database file, the .xls file is coming corrupted, following image
Whatwouldbethemistake,ItriedtofindbutIdonotseeanythingwrong.Followcodes.
ThefollowingPHPcodereceivesdatafromanotherpageofacompletedform.Wheretheuserselectsthedatabasetableandwhichcolumnsyouwanttogeneratetheinformation.
//IncluimosaclassePHPExcelinclude'../componentes/plugins/PHPExcel/Classes/PHPExcel.php';$tabela=$_POST['txttabela'];#recebeonomedatabela$p_colunas=$_POST['chkcolunas'];#recebeascolunasdasrespctivastabelas$qtdColunas=count($p_colunas);#contaquantascolunasousuarioselecionou//Instanciamosaclasse$objPHPExcel=newPHPExcel();if($tabela==""){ echo "Selecione a tabela."; }else{ $sel_sintaxe = "SELECT "; # adiciona o SELECT, deixando o parateses aberto para concatenar no proximo $sel_sintaxe $row = 1; $col = 0; for($i=0; $isetActiveSheetIndex(0) ->setCellValueByColumnAndRow($col, $row, $p_colunas[$i]); $col++; } #Usando o substr, retiramos os ultimos dois caracteres, que no caso seriam o espaço e uma virgula, que estariamo na ultima coluna. $sel_sintaxe = substr($sel_sintaxe, 0, -2); #Concatena qual tabela sera pesquisada os dados $sel_sintaxe .= " FROM ".$tabela.""; #recebe as condições que o usuario difiniu $RdNull = $_POST['rdNull']; $RdDescAsc = $_POST['rdDescAsc']; if(isset($_POST['txtlimite'])){ $txtLimite = $_POST['txtlimite']; } if($RdNull || $RdDescAsc || isset($txtLimite)){ if($RdNull=="nao"){ $sel_sintaxe .=" WHERE "; for($i=0; $i #Após executamos a pesquisa $sql_sel_tabela_preparado = $conexaobd->prepare($sel_sintaxe); $sql_sel_tabela_preparado->execute(); // Podemos definir as propriedades do documento $objPHPExcel->getProperties()->setCreator("Rech Lanches") ->setLastModifiedBy("Nome da Empresa") ->setTitle("Nome da Empresa - Avaliações") ->setSubject("Nome da Empresa - Avaliações - Exportação") ->setDescription("Dados Exportados do Banco de Dados"); // Alterando o tamanho da fonte $objPHPExcel->getDefaultStyle()->getFont()->setName('Arial'); $objPHPExcel->getDefaultStyle()->getFont()->setSize(11); // Define a planilha ativa para o PHPExcel operar $objPHPExcel->setActiveSheetIndex(0); // Define o título da planilha $objPHPExcel->getActiveSheet()->setTitle($tabela); // Exemplo de preenchimento de dados de maneira dinâmica, a partir de um resultado do banco de dados por exemplo. $linha = 3; while($sql_sel_tabela_dados = $sql_sel_tabela_preparado->fetch()){ $col = 0; for($i=0; $igetActiveSheet()->getStyle($colString."1")->applyFromArray( array('fill' => array( 'type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => 'CBE28C') ), ) ); //Fazendo que as primeiras cédulas sejam em negrito $objPHPExcel->getActiveSheet()->getStyle($colString.'1')->getFont()->setBold(true); // Alterando o tamanho da fonte $objPHPExcel->getActiveSheet()->getStyle($colString.'1')->getFont()->setSize(14); // Qubra de linha ativada para todas as cédulas $objPHPExcel->getActiveSheet()->getStyle($colString) ->getAlignment()->setWrapText(true); // Alinha as cédulas ao meio $objPHPExcel->getActiveSheet()->getStyle($colString) ->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // Alinha as cédulas ao centro $objPHPExcel->getActiveSheet()->getStyle($colString) ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Alinha as cédulas.1 ao centro $objPHPExcel->getActiveSheet()->getStyle($colString.'1') ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // Define a largura das colunas de modo automático $objPHPExcel->getActiveSheet()->getColumnDimension($colString)->setAutoSize(true); //Cria as linhas em suas repectivas letras números e dados $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colString. $linha, $sql_sel_tabela_dados[$colunaInver]); $col++; } $linha++; } $nometabela = "nomedaempresa_".$tabela.".xls"; #redefinimos configurações para gerar o arquivo, definir um nome, e forçar seu download. header('Content-Type: application/vnd.openxmlformats- officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$nometabela); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); ob_end_clean(); $objWriter->save('php://output'); exit; }