Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2006, 08:10
sergi_climent
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Reportes de PHP a StarOffice

Buenas Tardes,
en la empresa donde trabajo usan staroffice.
El problema q tengo q al generar un reporte como lo hacia antes a la hora de abrirlo me lo abre con el write (viene a ser el word) ya q su contenido es HTML.
Mi codigo es el siguiente:
Código PHP:
//////////////////////////////////////////////////////////////
///////////////// Resultats dels Totals //////////////////////

////////////////////////////////////////////////////////////////////
//Si les dates son iguals evitem el between
////////////////////////////////////////////////////////////////////
if ($datadesde==$datahasta){
    
$cons " AND fecha =".$datadesde."";        
}else{
    
$cons " AND fecha BETWEEN ".$datadesde." AND ".$datahasta."";
}
////////////////////////////////////////////////////////////////////
//mirem les hores
$hor " AND horaini >= '".$horadesde."' AND horafin <='".$horahasta."'";
////////////////////////////////////////////////////////////////////
//consulta per saber els minuts q hi ha entre varios dies
////////////////////////////////////////////////////////////////////
$sql_minuts "SELECT fecha, min(horaini) as horamin, max(horaini) as horamax        
               FROM tickets 
               WHERE tienda="
.$id_tenda." ".$cons." ".$hor."
               AND tickets.anulat=0
               GROUP BY tienda,fecha
               ORDER BY horaini"
;            
$res_minuts=mysql_query($sql_minuts);
$totalminuts=0;
while(
$row_minuts=mysql_fetch_array($res_minuts))
{
    
//Buscarem la hora maxima i la hora minima per saber la mitja de clients
    
$horainici=explode(':',$row_minuts["horamin"]);
    
$horafinal=explode(':',$row_minuts["horamax"]);
    
$horaini=$horainici[0].":".$horainici[1];
    
$horafin=$horafinal[0].":".$horafinal[1];
    
//cridem la funcio perque ens retorni els minuts
    
$minuts temps($horafin,$horaini);    
    
//ens retorna els minuts q hi ha entre la 1era venda i la ultima hora
    
$totalminuts=$totalminuts+$minuts;    
}
////////////////////////////////////////////////////////////
$sql "SELECT sum(total) as total,count(numero) as clients
        FROM tickets 
        WHERE tienda="
.$id_tenda." ".$cons." ".$hor."
        AND tickets.anulat=0
        GROUP BY tienda
        ORDER BY horaini"
;
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
if(
$numeroRegistros>0)
{
    
$row=mysql_fetch_array($res);
    
///////////////////////////////////////
    //Consulta per saber el nom de la tenda
    ///////////////////////////////////////
    
$sql_tenda="Select * from tendes where id_tenda=".$id_tenda;
    
$res_tenda=mysql_query($sql_tenda);
    
$reg_tenda=mysql_fetch_array($res_tenda);
    
$tenda=$reg_tenda["tendes"];
    
///////////////////////////////////////
    //Mostrar les dades de La Panera
    ///////////////////////////////////////
    
$shtml="<div align='center' size='1'>";
    
$shtml.= "<b>La Panera del Pà S.L.U. - B60247053<br>";
    
///////////////////////////////////////
    //si posa la mateixa data
    ///////////////////////////////////////
    
if ($datadesde==$datahasta){
        
$shtml.= "$tenda<br>";
        
$shtml.="Dia $fechadesde<br>";
    }else{
        
$shtml.="$tenda<br>";
        
$shtml.="Entre les Dates $fechadesde i $fechahasta<br>";
    }
    
///////////////////////////////////////
    //Posem les hores
    ///////////////////////////////////////
    
$hi=explode(':',$horadesde);
    
$hf=explode(':',$horahasta);
    
$ini=$hi[0].":".$hi[1];
    
$fin=$hf[0].":".$hf[1];
    
$shtml.="Entre les hores $ini i $fin";
    
$shtml.="</div>";
    
$shtml.="<br>";
    
//Facturacio Total
    
$total=$row[total];
    
//Li donem format al numero xq kedi bunic
    
$total=number_format($total,2,',','.');
    
//Numero de clients
    
$clients=$row[clients];
    
//Li donem format al numero xq kedi bunic
    
$clients2=number_format($clients,0,',','.');
    
//tenim els clients, tenim el minuts i sabem pasar de minuts a hores
    //ja hu tenim tot x fer el calcul per saber els clients per hora
    
$calcul=($clients/$totalminuts)*60;
    
//Li donem format al numero xq kedi bunic
    
$clientshora=number_format($calcul,1,',','.');
    
$shtml.="<div align='center' size='1'>";
    
$shtml.="<b>Facturació: $total € ";
    
$shtml.="  |  ";
    
$shtml.="Clients : $clients2";
    
$shtml.="  |  ";
    
$shtml.="Clients/hora : $clientshora";
    
$shtml.="</div>";
    
$shtml.="<br>";
}
///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
/////////////// Resultats per dia i hora /////////////////////
//////////////////////////////////////////////////////////////

$shtml.= "<table border=\"1\" align=\"center\" bgcolor=\"#EFEFEF\">";
$shtml.="<tr><td align=\"center\">&nbsp;</td>";

$str="SELECT DISTINCT fecha FROM tickets 
      WHERE fecha >="
.$datadesde." AND fecha <=".$datahasta."
      AND tienda="
.$id_tenda."
      ORDER BY fecha ASC"
;
$res=mysql_query($str) or die(mysql_error());
$nreg=mysql_num_rows($res);
if (
$nreg 0){
///////////////////////////////////////////////////////////
//Mostrem La capcelera dels dies
///////////////////////////////////////////////////////////
while($row=mysql_fetch_array($res))
{
    
$data=$row['fecha'];
    
$any=substr($data,0,4);
    
$mes=substr($data,4,2);
    
$dia=substr($data,6,2);
    
$data=$dia."/".$mes."/".$any;
    
$shtml.="<td align='center' colspan='2'><strong>$data</strong></td>";
}
$shtml.="</tr>";
///////////////////////////////////////////////////////////
//Bucle per posar F de Facturacio i C de clients
///////////////////////////////////////////////////////////
$shtml.= "<tr><td align='center'><strong>Hores</strong></td>";
for (
$i=1;$i<=$nreg;$i++){
$shtml.= "<td align='center'>F</td>";
$shtml.= "<td align='center'>C</td>";
}    
$shtml.="</tr>";
///////////////////////////////////////////////////////////
//Seleccionem totes les hores
///////////////////////////////////////////////////////////
$horaini=explode(':',$horadesde);
$horafin=explode(':',$horahasta);
$horai=round($horaini[0]);
$horaf=$horafin[0];
for (
$i=$horai;$i<$horaf;$i++){
$y=$i+1;
$shtml.= "<tr>";
$shtml.= "<td align='center'><strong>".$i."-".$y."</strong></td>";
///////////////////////////////////////////////////////////
//Total Facturacio i Clients per dia i hora
///////////////////////////////////////////////////////////
//Consulta per treure les dates
$str_data="SELECT DISTINCT fecha FROM tickets 
      WHERE fecha >="
.$datadesde." AND fecha <=".$datahasta." AND tienda=".$id_tenda."
      AND tickets.anulat=0
      ORDER BY fecha ASC"
;
$res_data=mysql_query($str_data) or die(mysql_error());
$nreg_data=mysql_num_rows($res_data);
if (
$nreg_data 0){
    
///////////////////////////////////////////////////////////
    //Montem les Hores per fer la consulta
    ///////////////////////////////////////////////////////////
    
if ($i 9){
        
$horainicial=$i.":00";
    }else{
        
$horainicial="0".$i.":00";
    }
    if (
$y 9){
        
$horafinal=$y.":00";
    }else{
        
$horafinal="0".$y.":00";
    }
    while(
$row_data=mysql_fetch_array($res_data))
    {
    
///////////////////////////////////////////////////////////
    //Consulta per treure el total Facturat i clients
    ///////////////////////////////////////////////////////////
    
$str_total="SELECT sum(total) as total, count(numero) as clients FROM tickets 
      WHERE fecha ="
.$row_data[fecha]." AND horaini >= '".$horainicial."' 
      AND tickets.anulat=0
      AND horafin <= '"
.$horafinal."' AND tienda=".$id_tenda;
    
$res_total=mysql_query($str_total) or die(mysql_error());
    
$nreg_total=mysql_num_rows($res_total);
        if (
$nreg_total 0){
            
$row_total=mysql_fetch_array($res_total);            
            
$total=$row_total[total];
            if (
$total==""){
                
$total=0;
            }
            
$clients=$row_total[clients];
            if (
$clients==""){
                
$clients=0;
            }
            
$shtml.= "<td align='right'>".$total."</td>";
            
$shtml.= "<td align='right'>".$clients."</td>";            
        }
//fi IF total
    
}//fi WHILE
}//fi IF data
$shtml.= "</tr>";
}
//fi FOR
}//fi si hi ha reg o no
$shtml.="</table>"
$scarpeta="excel/"
$dadespanera=$scarpeta."dades.ods"//ruta del archivo a generar  
$fp=fopen($dadespanera,"w");  
fwrite($fp,$shtml);  
fclose($fp); 
da igual con la extension q cree el archivo: xls o ods los dos me lo abre con el write.
Supongo q hace eso porque hay html en la pagina.
Como puedo crear un report en excel sin q haya html? puedo pasar los campos a las columans y filas directamente?
si es asi donde puedo encontrar informacion?

Muchas gracias de antemano,

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier