Hola a todos,
Estoy exportando datos de una bbdd a un fichero excel, pero tengo un problema que hay un campo que es 'varchar' pero cuando aparece en la hoja de cálculo, está con formato científico.
Gracias de antemano.
| |||
Formato de celda al exportar a Excel Hola a todos, Estoy exportando datos de una bbdd a un fichero excel, pero tengo un problema que hay un campo que es 'varchar' pero cuando aparece en la hoja de cálculo, está con formato científico. Gracias de antemano. |
| ||||
Poné el código que estas usando, por que lo que contas no suele pasar :(
__________________ Mi punto de partida es Que Bueno Lo Nuevo |
| |||
Esta es la cabecera: header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); y luego voy rellenando las celdas con los campos, así: <td align="center"><?php echo $row_consulta_form['apellido1'];?></td> Gracias. |
| |||
Con "header()" sólo compones las cabeceras HTTP para indicar que el dato que vas a enviar a tu cliente (navegador) es de tal formato (en tu caso un .xls) .. Pero .. esos datos con cierto formato característico como el que requiere Excel para recornocerlo como tal "columnas/filas" .. es el que tu compones "dinámicamente" con PHP y por donde "podrías" tener el problema. También piensa que los datos también intervienen en el problema ... cara a "Excel" .. no le importa si tu campo de tu BD original era un VARCHAR o cualquier otro tipo .. cuando tu compones tu "tabla HTML" para dar ese fomato reconocido por Excel (supongo que lo harás así) .. lo que manda es el própio dato y como lo interprete Excel .. Por ende .. y por eso, te insistimos tanto en solicitarte el código y .. ayudaría también una muestra de datos que trabajas .. Ahora .. si por A o B motivo no quieres publicar tu código (pese haberlo pedido como 3 o 4 veces ya ..) pues ... poco más se te puede recomendar como comprenderas. Un saludo, |
| |||
Cita: ¿Realmente cuesta tanto poner todo el código que usas en su contexto? .. Esto no quiere decir que resolvamos el problema si lo vemos todo .. pero por lo menos se puede descartar algo si estamos en las mismas condiciones que tu: tu que ves tu código y lo puedes probar.
Iniciado por dgcc Esta es la cabecera: header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=excel.xls"); header("Pragma: no-cache"); header("Expires: 0"); y luego voy rellenando las celdas con los campos, así: <td align="center"><?php echo $row_consulta_form['apellido1'];?></td> Gracias. Un saludo, |
| |||
Lo siento es que me parecia mucho código, pero ahí va, es el código de la tabla: Código PHP: Última edición por Cluster; 21/12/2005 a las 10:04 |
| |||
Si, podría ser mucho código .. pero para eso el foro te presta herramientas como el botón "PHP" para que el código quede coloreado (de mejor lectura) como lo ves ahora (despues que edité tu mensaje ..). En caso de que el código que expongas no te entre en un mensaje .. puedes usar vários (respondiendote) y también puedes dejar el link por aquí del código (pasalo a .phps o .txt para verlo) subiendo tus archivos a cualquier servidor tuyo. Un saludo, |
| |||
Ok, ya tenemos el código .. ahora falta que -especifiques- que "campo" de ese montón que componen tu hoja de calculo (planilla) es el que dá el problema. Y como ya te comenté . .no está de más que nos indiques una muestra de que valores toma ese campo que dá esos problemas!. Un saludo, |
| |||
Por cierto .. has probado a obtener por "pantalla" esa información (sin usar las cabeceras HTTP) para ver si los datos que obtienes de tu BD son los correctos y como se presentan estos?. Otra cosa .. viendo como queda ese montón de HTML .. se vé al final la columna "observaciones" ... bajo esta una série de campos con valores "si" "no" "si" "no" .. Bueno, el caso es que los campos (o celdas) superiores a estos "si" "no" están "Combinados" (unidos) .. Eso no sé como lo "tratará" Excel .. en principio si usas este método deberías entregar una tabla HTML de completa .. sin "Combinar" celdas. .. Revisalo. Un saludo, |
| |||
Perdón, El campo es '$row_consulta_form['seg_social']', y sí, probé a generarlo sin cabeceras y funciona bien, lo que he probado es que el campo tiene 12 caracteres, y ahí está el problema, pues si pongo 11 lo genera perfectamente. Gracias otra vez. |
| |||
Cita: Pero .. exactamente que te sale en Excel cuando se supera dicho tamaño, es algo tipo:
Iniciado por dgcc Perdón, El campo es '$row_consulta_form['seg_social']', y sí, probé a generarlo sin cabeceras y funciona bien, lo que he probado es que el campo tiene 12 caracteres, y ahí está el problema, pues si pongo 11 lo genera perfectamente. Gracias otra vez. ########## Es eso? Tu aplicas alguna macro o formato al tomar esos datos en Excel? La Celda/columna que te dá problemas .. que tipo de dato es esa celda/columna? Un saludo, |
| |||
Pues eso es de lo más normal ... En Excel si el campo de la celda en cuestión es de tipo "General" .. como así sale por defecto si tu no lo especificas, cosa que en tu generación de tu ".xls" como veras por ningún sitio le das algún formato o propiedad a las celdas .. así lo veras. Si tu vas a esa celda/columna y cambias el tipo de "Formato" -> "Celdas" -> "Formato de celda" -> "Número" -> (de General a Número) .. veras el dato correctamente. -------------------------- Excel ... tiene su própio formato de definición de datos, su própia forma de indicar no sólo algo básico como en que celda va a parar el dato sino por ejemplo el formato de la celda (colores .. etc) .. el tipo de dato de la celda (General, número, texto .. cierto formato...), etc. Ese "formato" se controla en "binario" principalmente y con sus códigos própios (que desconozco, parece que le llaman "BIFF" o algo así). Revisa en www.phpclasses.org alguna classe que trabaje de esta forma. Ojo por qué hay muchas que usan COM para no complicarse y generar .xls .. estos no funcionan en PHP bajo Linux ´(sólo con PHP corriendo en Windows y que tengan instalado MS Office en ellos) Un saludo, PD: te dás cuenta lo importante que es aportar suficientes datos sobre tu problema para que nos entendamos y te demos alguna solución más rápido? .. Tomalo en cuenta para otras veces. |
| ||||
Aportando a lo que dice cluster, una vez me paso, pero como eran de esos trabajos "rápidos", donde no se requiere gran complicación, decidi anteponerle un string al numero, y así excel me lo respeto: EJ: <td>ID 7898798798798798797</td> Si luego tengo tiempo veré este tema que me intereso y si consigo alguna ayuda mas la aportare.
__________________ Mi punto de partida es Que Bueno Lo Nuevo |
| ||||
<td> 280374946218280374946218</td> Te quedará con un espacio delante, pero es lo mejor que pude ver...si alguien sabe de algo mejor que lo largue ;)
__________________ Mi punto de partida es Que Bueno Lo Nuevo |
| |||
Encontré esta completa classe (juego de classes en realidad .. son unas cuantas relacionadas) para generar .xls bastante complejos. http://www.bettina-attack.de/jonny/v...hp_writeexcel/ No la he probado .. pero realmente parece muy buena, por lo menos se ven bien los Demos que hay publicados. Un saludo, |