Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aander.silva

[Resolvido] Exportar arquivo em excel com php

Recommended Posts

Muito bom dia a todos, meus camaradas!

 

Estou com o seguinte problema. Estou exportando uma planilha para o excel usando os seguintes headers...

 

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");

header ("Cache-Control: no-cache, must-revalidate");

header ("Pragma: no-cache");

header ("Content-type: application/x-msexcel");

header ("Content-Disposition: attachment; filename=nome_do_arquivo.xls" );

header ("Content-Description: PHP Generated Data" );

 

O arquivo abre, mas antes de carregar o arquivo recebo a seguinte mensagem:

"O arquivo que você está tentando abrir está em formato diferente do especificado pela extensão"

 

Sendo que na extensão do arquivo, como podem ver, é "xls". E se eu colocar "xlsx" aí mesmo que não vai...

header ("Content-Disposition: attachment; filename=nome_do_arquivo.xls" );

 

 

 

 

 

Valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei mas continuou na mesma... Testei aqui e isso no Excel 2003 não acontece, é só no 2007 pra acima que da essa mensagem, deve ser algum tipo de imcompatibilidade com esse código né...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A extensão do arquivo não determina o tipo dele. O Excel adicionalmente faz uma verificação se a extensão usada combina com o tipo dele.

 

Você tem certeza de que está gerando o arquivo corretamente? Dá uma olhada na dica de ouro do amigo Gabriel Ferrari.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até onde eu sei os códigos estão tudo certinho...

Testei como no exemplo que você mandou nesse link mas nem assim vai cara...

No excel 2003 abre sem mensagem nenhuma, mas no 2007 e 2010 da a mensagem que falei...

E já testei em várias máquinas com o 2007 e 2010, é código não funciona para esses...

To quebrando a cabeça aqui mas ñ ta indo de jeito nenhum...

Até fazendo como o exemplo a baixo a mensagem aparece.

 

header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header ("Last-Modified: ".gmdate("D,d M YH:i:s")." GMT");

header ("Cache-Control: no-cache, must-revalidate");

header ("Pragma: no-cache");

header ("Content-type: application/msexcel");

header ("Content-Disposition: attachment; filename=restaurantes.xls");

 

echo "teste";

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOM DIA SENHORES.

 

ESTOU TENTANDO EXPORTAR PARA O EXCEL 2007, OU SEJA PARA A EXTENSÃO .XLSX UM SELECT EXECUTADO ATRAVÉS DO PHP ATÉ AQUI TUDO BEM. O PROBLEMA É QUE NESTE SELECT ELE RETORNA 10 LINHAS, MAS QUANDO EXECUTO ESTA CONSULTA ATRAVÉS DA PÁGINA EM PHP ELE ME RETORNA APENAS UMA LINHA. CREIO QUE DEVO ESTA COMENDO BOLA EM ALGUM DETALHE, MAS COMO JÁ ESTOU A DIAS NESTA BRIGA DECIDI CONSULTAR QUEM REALMENTE SABE!

 

SEGUE ABAIXO OS DETALHES:

QUANDO EXECUTO ESTA PÁGINA ELA ME RETORNA ESTE CONTEÚDO

 

--------------------XX------------------XX--------------

CODIGO DESCRICAO TIPO

0101000019 BOLINHO CHOCOLATE 48X33G PA

--------------------XX------------------XX--------------

 

MAS O CONTEÚDO DO SELECT DEVERIA SER ESTE

 

--------------------XX------------------XX--------------

CODIGO DESCRICAO TIPO

1003011701 MASSA MINI BOLO SABOR BAUN. DOCE DE LEITE PI

0101000007 BOLO CHOCOLATE 24X200G PA

0101000008 BOLO MESCLADO 24X200G PA

0101000009 BOLO GOTAS DE CHOCOLATE 24X200G PA

0101000010 BOLO DE ABACAXI 24X200G PA

0101000015 BOLO DE CHOCOLATE DI LUCCA 24X130G PA

0101000016 BOLO MESCLADO DI LUCCA 24X130G PA

0101000017 BOLO DE LARANJA DI LUCCA 24X130G PA

0101000018 BOLO DE COCO DI LUCCA 24X130G PA

0101000019 BOLINHO CHOCOLATE 48X33G PA

--------------------XX------------------XX--------------

 

<?php

include("../conf/config.php");

 

/** Error reporting */

error_reporting(E_ALL);

 

date_default_timezone_set('Europe/London');

 

/** PHPExcel */

require_once '../Classes/PHPExcel.php';

 

 

// Create new PHPExcel object

$objPHPExcel = new PHPExcel();

 

// Set properties

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")

->setLastModifiedBy("Maarten Balliauw")

->setTitle("Office 2007 XLSX Test Document")

->setSubject("Office 2007 XLSX Test Document")

->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")

->setKeywords("office 2007 openxml php")

->setCategory("Test result file");

 

// Add some data

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("A1", 'CODIGO')

->setCellValue("B1", 'DESCRICAO')

->setCellValue("C1", 'TIPO');

 

 

$conn=odbc_connect($odbc,$user,$password);

if (!$conn){

if (phpversion() < '4.0'){

exit("Connection Failed: . $php_errormsg" );

}

else{

exit("Connection Failed:" . odbc_errormsg() );

}

}

 

$sql = "SELECT B1_COD, B1_DESC, B1_TIPO FROM SB1010 WHERE B1_COD < '0101000020' AND D_E_L_E_T_=''";

 

// Executa a instrução.

$rs=odbc_exec($conn,$sql);

// Fetch e exibir o valor conjunto de resultados

if (!$rs){

exit("Error in SQL");

}

while ($col1=odbc_fetch_array($rs)){

// Miscellaneous glyphs, UTF-8

$i=2;

$i+1;

 

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("a$i", "$col1[b1_COD]")

->setCellValue("b$i", "$col1[b1_DESC]")

->setCellValue("c$i", "$col1[b1_TIPO]");

 

}

// Rename sheet

$objPHPExcel->getActiveSheet()->setTitle('Simple');

 

// Set active sheet index to the first sheet, so Excel opens this as the first sheet

$objPHPExcel->setActiveSheetIndex(0);

 

 

// Redirect output to a client’s web browser (Excel2007)

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');

exit;

?>

 

CONTO COM A EXPERTISE DE VOCÊS

OBRIGADO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOM DIA SENHORES.

 

ESTOU TENTANDO EXPORTAR PARA O EXCEL 2007, OU SEJA PARA A EXTENSÃO .XLSX UM SELECT EXECUTADO ATRAVÉS DO PHP ATÉ AQUI TUDO BEM. O PROBLEMA É QUE NESTE SELECT ELE RETORNA 10 LINHAS, MAS QUANDO EXECUTO ESTA CONSULTA ATRAVÉS DA PÁGINA EM PHP ELE ME RETORNA APENAS UMA LINHA. CREIO QUE DEVO ESTA COMENDO BOLA EM ALGUM DETALHE, MAS COMO JÁ ESTOU A DIAS NESTA BRIGA DECIDI CONSULTAR QUEM REALMENTE SABE!

 

SEGUE ABAIXO OS DETALHES:

QUANDO EXECUTO ESTA PÁGINA ELA ME RETORNA ESTE CONTEÚDO

 

--------------------XX------------------XX--------------

CODIGO DESCRICAO TIPO

0101000019 BOLINHO CHOCOLATE 48X33G PA

--------------------XX------------------XX--------------

 

MAS O CONTEÚDO DO SELECT DEVERIA SER ESTE

 

--------------------XX------------------XX--------------

CODIGO DESCRICAO TIPO

1003011701 MASSA MINI BOLO SABOR BAUN. DOCE DE LEITE PI

0101000007 BOLO CHOCOLATE 24X200G PA

0101000008 BOLO MESCLADO 24X200G PA

0101000009 BOLO GOTAS DE CHOCOLATE 24X200G PA

0101000010 BOLO DE ABACAXI 24X200G PA

0101000015 BOLO DE CHOCOLATE DI LUCCA 24X130G PA

0101000016 BOLO MESCLADO DI LUCCA 24X130G PA

0101000017 BOLO DE LARANJA DI LUCCA 24X130G PA

0101000018 BOLO DE COCO DI LUCCA 24X130G PA

0101000019 BOLINHO CHOCOLATE 48X33G PA

--------------------XX------------------XX--------------

 

<?php

include("../conf/config.php");

 

/** Error reporting */

error_reporting(E_ALL);

 

date_default_timezone_set('Europe/London');

 

/** PHPExcel */

require_once '../Classes/PHPExcel.php';

 

 

// Create new PHPExcel object

$objPHPExcel = new PHPExcel();

 

// Set properties

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")

->setLastModifiedBy("Maarten Balliauw")

->setTitle("Office 2007 XLSX Test Document")

->setSubject("Office 2007 XLSX Test Document")

->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")

->setKeywords("office 2007 openxml php")

->setCategory("Test result file");

 

// Add some data

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("A1", 'CODIGO')

->setCellValue("B1", 'DESCRICAO')

->setCellValue("C1", 'TIPO');

 

 

$conn=odbc_connect($odbc,$user,$password);

if (!$conn){

if (phpversion() < '4.0'){

exit("Connection Failed: . $php_errormsg" );

}

else{

exit("Connection Failed:" . odbc_errormsg() );

}

}

 

$sql = "SELECT B1_COD, B1_DESC, B1_TIPO FROM SB1010 WHERE B1_COD < '0101000020' AND D_E_L_E_T_=''";

 

// Executa a instrução.

$rs=odbc_exec($conn,$sql);

// Fetch e exibir o valor conjunto de resultados

if (!$rs){

exit("Error in SQL");

}

while ($col1=odbc_fetch_array($rs)){

// Miscellaneous glyphs, UTF-8

$i=2;

$i+1;

 

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("a$i", "$col1[b1_COD]")

->setCellValue("b$i", "$col1[b1_DESC]")

->setCellValue("c$i", "$col1[b1_TIPO]");

 

}

// Rename sheet

$objPHPExcel->getActiveSheet()->setTitle('Simple');

 

// Set active sheet index to the first sheet, so Excel opens this as the first sheet

$objPHPExcel->setActiveSheetIndex(0);

 

 

// Redirect output to a client’s web browser (Excel2007)

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');

exit;

?>

 

CONTO COM A EXPERTISE DE VOCÊS

OBRIGADO.

 

--

 

Senhores já consegui!

Quebrei a cabeça mais um pouquinho, alterei uma coisa aqui e outra ali e deu certo!

Agora é só ajustar a formatação e tudo certo.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Fágner, estou com o mesmo problema, será que você pode me ajudar a resolver isso? Obrigada

 

Ola Fágner, estou com o mesmo problema, será que você pode me ajudar a resolver isso? Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.