<?
 
//Fiz essa classe pela necessidade de exportar 
 
//dados vindos de um banco sql server (vc pode usar BD)
 
//para se utilizar basta instanciar a classe
 
//passando como parametros os titulos das colunas
 
//dentro de um vetor e o segundo parametro sendo a query em si
 
//a classe chama por padrao o ponteiro $db do ADODB, caso n seja esse o nome
 
//fique a vontade para modificar a classe
 
//(A classe GeralExcel n eh minha)
 
//Creditos a DzaiaCuck - [email protected] 
 
//Rubens A. Monteiro - [email protected] 20/09/05
 
class sql2excel extends GeraExcel { 
 
        function sql2excel($tit, $sql) 
 
        {
 
            global $db; 
 
            $this->GeraExcel();
 
            for ($i=0; $i<count($tit); $i++) 
 
            {
 
                    $this->MontaConteudo(0,$i,$tit[$i]);
 
             }
 
            $qr=$db->execute($sql);
 
            $j=1;
 
            while ($reg=$qr->fetchrow())
 
            {
 
                    for ($i=0; $i<count($reg); $i++) 
 
                    {
 
                            $this->MontaConteudo($j,$i,$reg[$i]);
 
                    }
 
                    $j++;
 
            }
 
            $this->GeraArquivo();
 
        }
 
}
 
class  GeraExcel{
 
 
// define parametros(init)
 
function  GeraExcel(){
 
 
$this->armazena_dados   = ""; // Armazena dados para imprimir(temporario)
 
$this->ExcelStart();
 
}// fim constructor
 
 
     
 
// Monta cabecario do arquivo(tipo xls)
 
function ExcelStart(){
 
 
//inicio do cabecario do arquivo
 
$this->armazena_dados = pack( "vvvvvv", 0x809, 0x08, 0x00,0x10, 0x0, 0x0 );
 
}
 
 
// Fim do arquivo excel
 
function FechaArquivo(){
 
$this->armazena_dados .= pack( "vv", 0x0A, 0x00);
 
}
 
 
 
// monta conteudo
 
function MontaConteudo( $excel_linha, $excel_coluna, $value){
 
 
$tamanho = strlen( $value );
 
$this->armazena_dados .= pack( "v*", 0x0204, 8 + $tamanho, $excel_linha, $excel_coluna, 0x00, $tamanho );
 
$this->armazena_dados .= $value;
 
}//Fim, monta Col/Lin
 
 
// Gera arquivo(xls)
 
function GeraArquivo(){
 
 
//Fecha arquivo(xls)
 
$this->FechaArquivo();
 
header("Content-type: application/zip");
 
//header("Content-type: text/x-comma-separated-values");
 
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
 
header("Content-disposition: inline; filename=excel.xls");
 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 
header("Pragma: public");
 
print  ( $this->armazena_dados);
 
}// fecha funcao
 
# Fim da classe que gera excel
 
}
 
?>
 
 |