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\"> </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);
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
