Autor Tópico: [RESOLVIDO] EXPORTANDO BANCO PARA EXCEL ERRO  (Lida 1027 vezes)

ewertonsi

  • Novato
  • *
  • Mensagens: 16
  • Sábio aquele que partilha seu conhecimento.
[RESOLVIDO] EXPORTANDO BANCO PARA EXCEL ERRO
« Online: Setembro 16, 2015, 10:01:56 am »
Bom Dia Pessoal,

     Estou com um probleminha nesse código, se for possível alguém me dar uma mãozinha, eu agradeço.
     E o seguinte estou pegando alguns dados passado pelo o usuário como Mês e o Ano e em seguida faço
     uma consulta no banco de dados e exporto o resultado dessa consulta para uma tabela Excel via html.     
     Quando eu exporto o arquivo aparece os dados, mas na primeira linha aparece o seguinte erro.
   
     Segue a imagem do Erro.
   

Código
     
if(!validaData({ano}, 'AAAA')){
   $msg_erro ="Ano inválido";
    echo "<div style='background-color:white; text-align:center; border:2px red solid;'>
            <span style='color:red; font-size:15px; padding: 0 50px;'>$msg_erro</span>
        </div>";
}else{

//Criando e exportando planilhas do Excel
   
//Definição do nome do arquivo que será exportado
$arquivo = 'planilha.xls';

// Criamos uma tabela HTML com o formato da planilha
$html.= '';
$html.= '<TABLE>';
$html.= '<TR>';
$html.= '<TD ALIGN="CENTER"><b>ANO</b></TD>';
$html.= '<TD><b>MÊS</b></TD>';
$html.= '<TD><b>MATRÍCULA</b></TD>';
$html.= '<TD><b>SEGMENTO</b></TD>';
$html.= '<TD><b>AÇÃO ORÇAMENTÁRIA  </b></TD>';
$html.= '<TD><b>LÍQUIDO MENSAL  </b></TD>';
$html.= '<TD><b>BCFUNAFIN MENSAL  </b></TD>';
$html.= '<TD><b>BCINSS MENSAL  </b></TD>';
$html.= '<TD><b>FUNAFIN PATRONAL POR SERVIDOR  </b></TD>';
$html.= '<TD><b>INSS PATRONAL POR SERVIDOR  </b></TD>';
$html.= '<TD><b>AUXÍLIO SAÚDE  </b></TD>';
$html.= '<TD><b>AUXÍLIO ALIMENTAÇÃO  </b></TD>';
$html.= '<TD><b>LÍQUIDO 13  </b></TD>';
$html.= '<TD><b>BCFUNAFIN 13  </b></TD>';
$html.= '<TD><b>BCINSS 13  </b></TD>';
$html.= '<TD WIDTH=500><b></b></TD>';
$html.= '<TD><b>FUNAFIN PATRONAL 13º POR SERVIDOR  </b></TD>';
$html.= '<TD><b>INSS PATRONAL 13º POR SERVIDOR  </b></TD>';
$html.= '</TR>';


$sql = "SELECT
    Ano,
    Mes,
    Matricula,
    Segmento,
    AcaoOrcamentaria,
    ProventosLiquidos,
    BCFunafinPatronal,
    BCINSSPatronal,
    EncargosFunafin,
    EncargosInss,
    AuxilioSaude,
    AuxilioAlimentacao,
    Liquido13,
    BCFunafin13,
    BCINSS13,
    EncargosFunafin13,
    EncargosInss13
FROM
    dbo.SCT_FOLHA WHERE Ano = {ano} AND Mes = {mes}";


sc_select(dataset, $sql);


if (false == {dataset})     // Error while accessing database
{
    sc_error_message('Error ao acessar o banco de dados');

}else{
    while(!$dataset->EOF){
          $Ano                        = $dataset->fields[0];
          $Mes                        = $dataset->fields[1];
          $Matricula                = $dataset->fields[2];
          $Segmento              = $dataset->fields[3];
          $AcaoOrcamentaria  = $dataset->fields[4];
          $ProventosLiquidos  = floatval($dataset->fields[5]);
          $BCFunafinPatronal  = floatval($dataset->fields[6]);
          $BCINSSPatronal     = floatval($dataset->fields[7]);
          $EncargosFunafin     = floatval($dataset->fields[9]);
               $EncargosInss          = floatval($dataset->fields[10]);
               $AuxilioSaude           = floatval($dataset->fields[11]);
               $AuxilioAlimentacao  = floatval($dataset->fields[12]);
               $Liquido13                = floatval($dataset->fields[13]);
               $BCFunafin13            = floatval($dataset->fields[14]);
               $BCINSS13               = floatval($dataset->fields[15]);
               $EncargosFunafin13  = floatval($dataset->fields[16]);
               $EncargosInss13       = floatval($dataset->fields[17]);
          
      
           $vazio = " ";      

      
           $html.= "<TR>";   
           $html.= "<TD ALIGN='RIGHT'>".$Ano."</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$Mes."</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$Matricula."</TD>";
           $html.= "<TD>".$Segmento."</TD>";
           $html.= "<TD>".$AcaoOrcamentaria."</TD>";         
           $html.= "<TD ALIGN='RIGHT'>".$ProventosLiquidos."</TD>";
      $html.= "<TD ALIGN='RIGHT'>".$BCFunafinPatronal."</TD>";
      $html.= "<TD ALIGN='RIGHT'>".$BCINSSPatronal."</TD>";         
      $html.= "<TD ALIGN='RIGHT'>".$EncargosFunafin."</TD>";
      $html.= "<TD ALIGN='RIGHT'>".$EncargosInss."</TD>";   
           $html.= "<TD ALIGN='RIGHT'>".$AuxilioSaude."</TD>";
      $html.= "<TD ALIGN='RIGHT'>".$AuxilioAlimentacao."</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$Liquido13."</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$BCFunafin13."</TD>";
           $html.= "<TD>".$BCINSS13."</TD>";
           $html.= "<TD WIDTH=500>$vazio</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$EncargosFunafin13."</TD>";
           $html.= "<TD ALIGN='RIGHT'>".$EncargosInss13."</TD>";   
           $html.= "</TR>";
      
      
   $dataset->MoveNext();         
}   
   
$dataset->Close();

           $html.= '</TABLE>';   
           $html.= "<br>";
   
   
// Configurações header para forçar o download
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Encoding: UTF-8");
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=\"{$arquivo}\"");
header ("Content-Description: PHP Generated Data" );
      
}

   echo $html;

   
   exit();

}
 
   
« Última modificação: Setembro 30, 2015, 11:42:41 am por ewertonsi »

ewertonsi

  • Novato
  • *
  • Mensagens: 16
  • Sábio aquele que partilha seu conhecimento.
Re:EXPORTANDO BANCO PARA EXCEL ERRO
« Responder #1 Online: Setembro 16, 2015, 10:13:52 am »
Imagem do Erro!

marciowilliam

  • Intermediário
  • ***
  • Mensagens: 118
    • Email
Re:EXPORTANDO BANCO PARA EXCEL ERRO
« Responder #2 Online: Setembro 20, 2015, 09:04:17 pm »
Tenta criar por uma aplicação BLANK a planilha excel usando  o PHPEXECEL.

ewertonsi

  • Novato
  • *
  • Mensagens: 16
  • Sábio aquele que partilha seu conhecimento.
Re:EXPORTANDO BANCO PARA EXCEL ERRO
« Responder #3 Online: Setembro 21, 2015, 09:57:59 am »
Olá william,

    Fiz o que vc me indicou, porém não tenho pratica alguma com o PHPEXCEL. Estava testando aqui esse código e ao exportar os dados para o Excel está acontecendo o seguinte. Se poder me ajuda, agradeço ..... vlew.

Código:

//Incluimos a classe PHPExcel
require_once $this->Ini->path_third.'/phpexcel/PHPExcel.php';

// Instanciamos a classe
$objPHPExcel = new PHPExcel();

// Definimos o estilo da fonte
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);


// Criamos as colunas
$objPHPExcel->setActiveSheetIndex(0)
                     ->setCellValue('A1', 'Teste' )
                     ->setCellValue('B1', "Teste" )
                     ->setCellValue("C1", "Teste" )
                     ->setCellValue("D1", "Teste" );


// Configurar diferentes larguras paras as colunas como padrão
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(90);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);

//Escolhe a posição exata aonde o dado será inserido (coluna, linha, dado);
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 2, "Teste");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, 2, "Teste");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, 2, "Teste");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, 2, "Teste");


// Renomear o nome das planilha atual, lembrando que um único arquivo pode ter várias planilhas
$objPHPExcel->getActiveSheet()->setTitle('TestandoTeste');

// Cabeçalho do arquivo para ele baixar
header("Content-Encoding: UTF-8");
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Folha.xls"');
header('Cache-Control: max-age=0');

// Se for o IE9, isso talvez seja necessário
header('Cache-Control: max-age=1');

// Acessamos o 'Writer' para poder salvar o arquivo
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');

// Salva diretamente no output
$objWriter->save('php://output');

exit;

}

marciowilliam

  • Intermediário
  • ***
  • Mensagens: 118
    • Email
Re:EXPORTANDO BANCO PARA EXCEL ERRO
« Responder #4 Online: Setembro 25, 2015, 02:11:29 am »
Oi eu tambem nao tenho pratica com esta classe, o  que eu fiz foi ir no site pegar o exemplo e desenvolver.

A surra inicial que eu tomei foi que eu usava aplicacao controle, ao inves de blank.

Depois o que eu fiz foi montando aos poucos, fiz uma celula mandava gerar, fazia outra celula e mandava gerar.

Como o que eu tinha que montar era bem pequeno, foi mas como teste do que real eu consegui.

Tenta desta forma, cria algo bem simples e depois vai acrescentando, pode ser  que assim vc consiga achar o problema.

ewertonsi

  • Novato
  • *
  • Mensagens: 16
  • Sábio aquele que partilha seu conhecimento.
Re:EXPORTANDO BANCO PARA EXCEL ERRO
« Responder #5 Online: Setembro 30, 2015, 11:41:53 am »
marciowilliam,

  Quebrei bastante a cabeça com o PHPExcel, já tinha pedido muito tempo quanto a isso, decidi optar por criar
  a planilha via HTML, deu algumas broncas mais consegui resolver.

Obrigado pela força. ..

valew.