Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vpess

Exportação dados Sql Server para Excel via PHP

Recommended Posts

vpess

Boas,

Estou a precisar da ajuda para exportar dados de uma pesquisa feita em SQL Server para Excel, isto via PHP.

Tenho pesquisado e encontro umas funções proprias,mas nao consigo implementa-las.

Share this post


Link to post
Share on other sites
cyclop

Modo mais facil: sacas o Mysql querybrowser ou o Heidi fazes o teu select, e exportas para csv.......


"Quando eu for grande quero ser como o Celso"

Share this post


Link to post
Share on other sites
vpess

Boas,

Eu queria fazer uma opção num site de exportação, para o cliente poder exportar algumas pesquisas. Uso linguagem php e uma bd em sql server.

Não existe nenhuma função que faça isso sem ser por software???

Share this post


Link to post
Share on other sites
vpess

Boas,

Dá-me este erro:

Fatal error: Call to a member function execute() on a non-object in C:\AppServ\www\cmg\excel.php on line 21

<?php

include("excel.inc.php"); 

$sql="select nome,no from cl $where";
$tit[0]="nome";
$tit[1]="no";

$gerar= new sql2excel($tit,$sql); //using $db pointer by default


?>

Share this post


Link to post
Share on other sites
djthyrax

Posta aí o código do excel.php e do excel.inc.php


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
vpess

Aqui vai o código dos dois ficheiros. Já tive a ver e parece tudo ok.

<?
//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 - dzaiacuck@ig.com.br 
//Rubens A. Monteiro - unplu@hotmail.com 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
}
?>

<?

$sql="select nome,no from cl $where";
$tit[0]="nome";
$tit[1]="no";
include("excel.php");
$gerar= new sql2excel($tit,$sql); //using $db pointer by default
include("excel.php");

?>

Share this post


Link to post
Share on other sites
djthyrax

O problema é

                        $qr=$db->execute($sql);

No construtor do sql2excel. Basicamente, tens de definir uma variável $db que vai conter ser uma instância duma ligação à base de dados me parece.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
vpess

Defini uma variavel com: servidor\instancia.

Será mais facil exportar para xml???? Precisava mesmo  de montar um sistema de exportação/importação. O problema é que tenho poucas bases de programação.

Share this post


Link to post
Share on other sites
vpess

O código é este:

<?php

$db="ACER\SQL";

$connection_string = 'Driver={SQL Native Client};Server=ACER\SQL;Database=BD; Trusted_Connection=no;';

$user = 'sa';

$pass = 'yesgo';

$conn = odbc_connect( $connection_string, $user, $pass );

$sql="select nome,no from cl $where";

$tit[0]="nome";

$tit[1]="no";

include("excel.php");

$gerar= new sql2excel($tit,$sql); //using $db pointer by default

?>

Share this post


Link to post
Share on other sites
djthyrax

O $db tem de ser algo do género $db = new oMeuObjectoDeBaseDeDados();


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.