Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2012, 05:47
Avatar de SUSMO
SUSMO
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Dar formato texto a una celda con phpExcel

Hola!!

Estoy trabajando con la libreria phpExcel para exportar/importar los productos de y a mi base de datos. Ya tengo hecho todo el proceso pero me he encontrado con que si un producto tiene la referencia 0001 por ejemplo, al pasarlo a excel me lo escribe como numérico, es decir, como 1.
Me gustaria saber como puedo dar formato tipo texto con esta libreria a una columna o a una celda para que no me cambie la referencia a tipo numérico automáticamente.

Para añadir los datos a la celda utilizao esta función:
Código PHP:
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($numColum,$numRow,$products[$i][$colName]); 
Añado los datos mediante dos fors, donde $numColum es el número de la columna, $numRow es el número de la fila y $products[$i][$colNname] es el valor de la referéncia, 0001.

Aprovecho para preguntar si hay alguna manera de aplicar el mismo formato a toda la columna en lugar de hacerlo celda por celda. Lo he estado buscando pero no lo he encontrado.

También me encuentro con otro problema, y es al calcular el ancho de las columnas.
En todas las columnas lo hago con la siguiente linia de código y me funciona perfectamente:
Código PHP:
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($numColum)->setAutoSize(true); 
Pero si tengo que combinar más de una columna no me funciona. Por ejemplo, en la fila 1 quiero combinar 4 celdas (columnas A,B,C y D ) y en la fila 2 que no esten combinadas (las mismas columnas). Entonces no me calcula el ancho de ninguna, ni la combinada ni las demás.
He conseguido que en lugar del setAutoSize, me haga un width predeterminado, pero entonces me lo hace con todas las columnas no combinadas excepto con la priemera que es donde hago el merge.
Bueno, dejo el código a ver si se entiende mejor a lo que me refiero:
Código PHP:
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($numColum)->setAutoSize(true);
$numColumA $numColum;
for (
$i 1$i $numRowListAux-1$i++)
{        
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($numColum)->setWidth(12);
$numColum++;
}
$objPHPExcel->getActiveSheet()->mergeCellsByColumnAndRow($numColumA,1,$numColum,1); 
A ver si podéis hecharme una manilla jeje
__________________
Perdida en el mundo del conocimiento