Foros del Web » Programando para Internet » PHP »

Problema creando XLS con PHP

Estas en el tema de Problema creando XLS con PHP en el foro de PHP en Foros del Web. Buenas, Voy a intentar ser lo mas explicativo posible, si quedan dudas preguntenme. Tengo el siguiente problema. Estoy creando una mini aplicacion en php, el ...
  #1 (permalink)  
Antiguo 26/12/2011, 16:40
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Problema creando XLS con PHP

Buenas,

Voy a intentar ser lo mas explicativo posible, si quedan dudas preguntenme. Tengo el siguiente problema.

Estoy creando una mini aplicacion en php, el codigo de la aplicacion mucho no importa, basicamente es un TextArea en un formulario en html, que al enviarlo, saca informacion del texto y la ingresa en una BD, e ingresa un campo que es EL TEXTAREA.

Hasta ahi, todo bien, me inserta en la BD todo correctamente, es mas cuando lo quiero mostrar en html me anda todo de 10, usando el nl2br.

Mi problema viene cuando quiero crear un excel apartir de lo que esta en la BD.
El codigo del excel es:

Excel.php

Código PHP:
<?
$host 
"localhost";
$user "root";
$pass "***";
$db "***";
$connection mysql_connect($host$user$pass) or die ("Unable to connect!"); 
mysql_select_db($db) or die ("Unable to select database!"); 

$sql "
SELECT 
    *
FROM
    ****
WHERE
    status LIKE 'Open'
ORDER BY
    DAY DESC
"
;
 
$r mysql_query$sql ) or trigger_errormysql_error($conn), E_USER_ERROR );
$return '';
if( 
mysql_num_rows($r)>0){
    
$return .= '<table border=1>';
    
$cols 0;
    while(
$rs mysql_fetch_row($r)){    
        
$return .= '<tr>';
        if(
$cols==0){
            
$cols sizeof($rs);
            
$cols_names = array();
            for(
$i=0$i<$cols$i++){
                
$col_name mysql_field_name($r,$i);
                
$return .= '<th><center>'.htmlspecialchars($col_name).'</center></th>';
                
$cols_names[$i] = $col_name;
            }
            
$return .= '</tr><tr>';
        }
        for(
$i=0$i<$cols$i++){
            
#En esta iteración podes manejar de manera personalizada datos, por ejemplo:
            
if($cols_names[$i] == 'fechaAlta'){ #Fromateo el registro en formato Timestamp
                
$return .= '<td>'.htmlspecialchars(date('d/m/Y H:i:s',$rs[$i])).'</td>';
            }else if(
$cols_names[$i] == 'activo'){ #Estado lógico del registro, en vez de 1 o 0 le muestro Si o No.
                
$return .= '<td>'.htmlspecialchars$rs[$i]==1'SI':'NO' ).'</td>';    
            }else if(
$cols_names[$i] == '****'){ 
                
$return .= '<td>'.$rs[$i].'</td>';              
            }else if(
$cols_names[$i] == '****'){
                    
$rs[$i] = subStr($rs[$i], 0, -1);
                    if ( 
$rs[$i] == 'Warning') {
                
$return .= "<td bgcolor='04E4FD'><center>".htmlspecialchars($rs[$i])."</center></td>";    
                    } elseif ( 
$rs[$i] == 'Major') {
                    
$return .= "<td bgcolor='FDA604'><center>".htmlspecialchars($rs[$i])."</center></td>"
                    } elseif ( 
$rs[$i] == 'Critical') {    
                    
$return .= "<td bgcolor='FD0411'>".htmlspecialchars($rs[$i])."</center></td>"
                    } else { 
$return .= '<td><center>'.htmlspecialchars($rs[$i]).'</center></td>';}
            }else{
                
$return .= '<td><center>'.htmlspecialchars($rs[$i]).'</center></td>';
            }
        }
        
$return .= '</tr>';
    }
    
$return .= '</table>';
    
mysql_free_result($r);
}
#Cambiando el content-type más las <table> se pueden exportar formatos como csv
        
header("Pragma: public");
        
header("Expires: 0");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
header("Content-Type: application/force-download");
        
header("Content-Type: application/octet-stream");
        
header("Content-Type: application/download");;
        
header("Content-Disposition: attachment;filename=Prueba_".date('d-m-Y').".xls");
        
header("Content-Transfer-Encoding: binary ");        
echo 
$return;  

?>
El codigo lo saque de un aporte de esta pagina, y anda de 10. Todo anda bien. El unico problema, es en la celda del Textarea, me lo pone todo en una sola linea, y yo lo quiero que este en formato texto, con paragrafos.

Busque por todos lados y no encontre como hacerlo.

Si alguien me puede dar una mano le agradeceria

Saludos,
  #2 (permalink)  
Antiguo 26/12/2011, 16:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema creando XLS con PHP

Puedes usar nl2br() para convertir los saltos de linea.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/12/2011, 16:50
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: Problema creando XLS con PHP

Cuando lo pongo en pantalla por HTML lo hago, y anda de 10.

El problema es el Textarea en el Excel. Me tiene quedar, un texto con parrafos en una misma celda.
  #4 (permalink)  
Antiguo 26/12/2011, 16:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema creando XLS con PHP

¿Pero no lo haces el general la tabla del XLS o si?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/12/2011, 16:58
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: Problema creando XLS con PHP

Toda la tabla esta en formato general. La clave es el contenido, que necesito que este de a parrafos ,y me queda todo en una linea.



El primero es como me esta quedando.
El segundo es como me deberia quedar.
  #6 (permalink)  
Antiguo 26/12/2011, 17:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema creando XLS con PHP

Entiendo tu punto, pero ¿estás usando nl2br() cuando general el XLS o no?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/12/2011, 17:08
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: Problema creando XLS con PHP

Ahora no. Pero lo use una vez, y queda mal con eso, te queda asi:


Deberia quedar igual, pero todo en una celda.
  #8 (permalink)  
Antiguo 26/12/2011, 17:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema creando XLS con PHP

Bueno, te doy mi punto de vista.

Una tabla HTML no es un documento real de Excel, pues el formato de Excel es completamente binario. Es cierto que Excel puede abrirlo, pero no así todos los programas que entienden dicho formato.

Necesitas buscar y usar una librería real para la generación de archivos XLS.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 26/12/2011, 17:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: Problema creando XLS con PHP

Disculpa mi ignorancia, como seria la onda de usar librerias reales para generar archivos XLS, me das un poco de informacion asi investigo.. Implicaria programar orientado a objetos?
  #10 (permalink)  
Antiguo 26/12/2011, 17:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema creando XLS con PHP

Si, creo que necesitas usar OO y lo siguiente: PHPExcel
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: creando, formulario, html, mysql, registro, sql, xls
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:16.