0
Good, I am trying to pass the values of an HTML table that receives data from a SYBASE database through odbc.
When creating an 'xlsx' file formatting excel prevents the created page from opening and displays the following error " excel cannot open the following file because the format or file extension is not valid".
The code used in this situation is as follows: :
header("Content-Type: application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xlsx"); //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
Otherwise, I tried to save the file as a . xls and it gives me the same error, although, it allows me to open the file.
Code used in this situation :
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=abc.xls"); //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
The problem is that I really need the created file to be an . xlsx file and not an . xls.
I’ve tried using Phpexcel to do it, and the truth is I can create a table. xlxs but the complexity of the data I receive makes it a little complex that I am creating a cycle and having to fill the cell as I have to in Phpexcel. Another problem I find here is that the first line of the result coming from the database is ignored.
The code you were using with Phpexcel is as follows:
$ano = addslashes( $_SESSION['anop']);
$codigo = addslashes( $_SESSION['codigo']);
$db = odbc_connect($dsn, $user, $pwd);
$query = odbc_exec($db, 'Select * from GP_Vw_Valores_Pagos where Ano='.$ano.' and Codigo='.$codigo.' order by CD');
$row = odbc_fetch_array($query);
$objPHPExcel = new PHPExcel();
$rowCount = 1;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount,'Cd');
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount,'Descricao');
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount,'Tipo');
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount,'Janeiro');
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount,'Fevereiro');
$objPHPExcel->getActiveSheet()->SetCellValue('G'.$rowCount,'Março');
$objPHPExcel->getActiveSheet()->SetCellValue('H'.$rowCount,'Abril');
$objPHPExcel->getActiveSheet()->SetCellValue('I'.$rowCount,'Maio');
$objPHPExcel->getActiveSheet()->SetCellValue('J'.$rowCount,'Junho');
$objPHPExcel->getActiveSheet()->SetCellValue('L'.$rowCount,'Julho');
$objPHPExcel->getActiveSheet()->SetCellValue('M'.$rowCount,'Agosto');
$objPHPExcel->getActiveSheet()->SetCellValue('N'.$rowCount,'Setembro');
$objPHPExcel->getActiveSheet()->SetCellValue('O'.$rowCount,'Outubro');
$objPHPExcel->getActiveSheet()->SetCellValue('P'.$rowCount,'Novembro');
$objPHPExcel->getActiveSheet()->SetCellValue('Q'.$rowCount,'Dezembro');
while ($row = odbc_fetch_array($query)){
$rowCount++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['CD']);
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['Descricao']);
} ;
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
Can anyone detect an error or have any solution better than these?