Tenia que exportar unos datos de MySQL a Excel vía PHP. Esa parte es fácil, lo difícil era que debían salir con 2 decimales y en formato de numero. Lo complicado es que cuando tu exportas un numero de PHP a Excel, digamos 587.00, Excel lo presenta en pantalla como 587 a secas. Se come los decimales porque es un numero entero.
Una solución es anteponer un espacio antes del número pero esto lo convierte en cadena y como tal no puede ser operada matemáticamente. Googleando encontré la solución a mi problema que aquí comparto con ustedes, en realidad no es muy complicado, pero esto pocos lo saben.
Para dar formato a una celda debe incluirse en la etiqueta <td></td> el atributo de estilo "mso-number-format" de la siguiente forma
Código :
<table> <tr> <td style="mso-number-format:'0.00';">12346579.00</td> </tr> </table>
Con este pequeño agregado Excel reconocerá esta celda como una celda con formato numérico con 02 decimales, sin embargo este no es el único formato posible. Aquí les dejo algunos posibles formatos que pueden establecer con la misma formula
Código :
mso-number-format:"0" Sin Decimales mso-number-format:"0.00" 02 Decimals mso-number-format:"#,##0.000" Coma separadora de miles y 03 decimales mso-number-format:"mm/dd/yy" Formato de Fecha Completa mso-number-format:"mmmm d, yyyy" Formato de Fecha Literal mso-number-format:"m/d/yy h:mm AM/PM" Formato de Fecha Corta con Hora y AM/PM mso-number-format:"Short Date" Formato de Fecha Corta mso-number-format:"Medium Date" Formato de Fecha Mediana mso-number-format:"d-mmm-yyyy" Fecha Mediana separada por guiones mso-number-format:"Short Time" Formato corto de hora mso-number-format:"Medium Time" Formato mediana de hora mso-number-format:"Long Time" Formato de Hora Larga mso-number-format:"Percent" Porcentaje con 02 decimales mso-number-format:"0%" Porcentaje sin decimale mso-number-format:"0.E+00" Notación Cientifica mso-number-format:"@" Texto mso-number-format:"# ???/???" Fracciones - de 3 dígitos a más (312/943) mso-number-format:"0022£0022#,##0.00" Formato de Moneda (Libras Esterlinas) mso-number-format:"#,##0.00_ ;[Red]-#,##0.00" Formato de Número con negativos en rojo y signo -
Con eso creo que pueden empezar a probar, para otros formatos revisar como los nota Excel en la parte de Formato ce Celdas, pestaña Número, Opción Personalizada revisen con atención como se crea cada formato y creen los propios poniéndolos siempre entre comillas simples ( ' ' ).
Espero que esto les sea de utilidad
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por #Null el 27 de Septiembre de 2010
Por raz el 28 de Septiembre de 2010
Por NeoCesar el 28 de Septiembre de 2010
Código :
Colocando esto antes de todo al momento de abrir la pagina PHP, esta sera reconocida por el navegador como una hoja Excel a descargar y te pediré por consiguiente la ubicación en tu disco duro donde guardarla.
Por CLAnonimo el 29 de Septiembre de 2010
Por NeoCesar el 29 de Septiembre de 2010
Donde dice:
Código :
Debe decir:Código :
Ojo con el punto antes de xlsPor Rely el 29 de Septiembre de 2010
Por kitashi_komokoro el 03 de Octubre de 2010
Por Viri el 15 de Octubre de 2010
Por chinox el 17 de Noviembre de 2010
Por Carla el 11 de Enero de 2011
Por Alejandro el 13 de Enero de 2011
Por rayler el 19 de Enero de 2011
<?php
$mes=rtrim($_POST['mes']);
$anyo=rtrim($_POST['anyo']);
$consulta1 = "select * from tabla_plan_donaciones_menual_anual_php where mes='$mes' and anyo=$anyo";
if (preg_match("/LIMIT/", $consulta1))
{
preg_match("/^SELECT(.*?)(LIMIT ([0-9]+)[, ]*([0-9]+)*)?$/", $consulta1, $limits);
$result1 = odbc_exec($odbc, "SELECT" . $limits[1]);
$show = $limits[4] + $limits[3];
$limits[3]++;
for ($i = $limits[3]; $i <= $show; $i++)
{
$row = odbc_fetch_array($result1, $i);
$nombre_muncipio=$row["nombre_municipio"];
$plan_men_munc=$row["plan_men_munc"];//asigan la columna plan d ela bvase de datos a este array y asi con las demas columnas
$sumaderealdoanciones=$row["sumaderealdoanciones"];
$por_ciento=$row["por_ciento"];
$faltan=$row["faltan"];
$mes=$row["mes"];
$anyo=$row["anyo"];
printf("
<tr><td> %s</td> <td> %s</td> <td> %s</td><td> %s</td><td> %s</td><td> %s</td><td> %s</td></tr>",
$nombre_muncipio,
$plan_men_munc,//asigan la columna plan d ela bvase de datos a este array y asi con las demas columnas
$sumaderealdoanciones,
$por_ciento,
$faltan,
$mes,
$anyo);
}
}
else{
$result1 = odbc_exec($odbc, $consulta1);
while ($row = odbc_fetch_array($result1))
{
$nombre_muncipio=$row["nombre_municipio"];
$plan_men_munc=$row["plan_men_munc"];//asigan la columna plan d ela bvase de datos a este array y asi con las demas columnas
$sumaderealdoanciones=$row["sumaderealdoanciones"];
$por_ciento=$row["por_ciento"];
$faltan=$row["faltan"];
$mes=$row["mes"];
$anyo=$row["anyo"];
printf("
<tr><td> %s</td> <td> %s</td> <td> %s</td><td> %s</td><td> %s</td><td> %s</td><td> %s</td></tr>",
$nombre_muncipio,
$plan_men_munc,//asigan la columna plan d ela bvase de datos a este array y asi con las demas columnas
$sumaderealdoanciones,
$por_ciento,
$faltan,
$mes,
$anyo);
}
}
odbc_free_result($result1) ;
odbc_close($odbc);
?>
Por rayler el 19 de Enero de 2011
<?php include("reconexion.php"); ?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1 width="20">
<TD> <B>Municipio</B></TD><TD> <B>Plan</B></TD><TD> <B>Real</B> </TD><TD style="mso-number-format:'0.00';"> <B>% </B> </TD><TD style="mso-number-format:'0.00';"> <B>Faltan</B> </TD><TD> <B>Mes</B> </TD><TD> <B>Año</B> </TD></TR>
Por rayler el 19 de Enero de 2011
Por rayler el 19 de Enero de 2011
Por henry el 15 de Febrero de 2011
Alguien sabe como poner en cursiva o negrita los titulos o no se colores a letras?
Si alguien sabe digame please!
Por Jonathan el 14 de Marzo de 2011
Por Walter Caraza el 30 de Mayo de 2011
Por Ricardo el 15 de Julio de 2011
Por Oracle17 el 24 de Agosto de 2011
Por naguaty el 20 de Septiembre de 2011
Por edward el 23 de Septiembre de 2011
Por rabulu el 26 de Noviembre de 2011
y para el amigo que le quiere dar formato a excel, eso se arregla con CSS, solo en la etiqueta <td style="font-weight: bold; background-color= XXXXXX"></td> y con estp tendras las celdas a las que le aplicas este estilo en negrita y de un color de acuerdo al valor hexadesimal de la XXXXXXX.
saludos
Por jorperval el 27 de Diciembre de 2011
Por Nomo el 29 de Diciembre de 2011
echo' <td>$'.$total.'</td>';
Por Txumari el 09 de Abril de 2012
Por ZazúPerú el 16 de Junio de 2012
Por Hernán el 03 de Septiembre de 2012
Por gustavo el 17 de Octubre de 2013
Por jcrios el 04 de Noviembre de 2013
Por Sams el 29 de Mayo de 2014
Por anonimo el 20 de Julio de 2015
Por Samuel el 24 de Julio de 2015
Por Ivan el 07 de Noviembre de 2016
Por Diana el 26 de Noviembre de 2016
justo lo quue necesitaba. Gracias por compartir
Por FRPG el 10 de Agosto de 2018
Por Alejandro el 19 de Febrero de 2019
Por RHAF el 07 de Marzo de 2019
Por chelix el 21 de Marzo de 2019