Comunidad de diseño web y desarrollo en internet

Exportar de PHP a Excel y dar formato a celdas

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.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate