2012-06-19 140 views
5

Estoy algo perplejo por el comportamiento de PHPExcel con algunos archivos que tengo. Los archivos contienen aprox. 3000 filas de datos, pero de acuerdo con PHPExcel, la última fila utilizada es 65535. Intenté y corté algunas líneas del archivo y las pegué en un archivo nuevo, sin éxito. No importa si es formato Excel5 o Excel2007, siempre el mismo resultado.PHPExcel - lee más allá de la última fila

¿Alguna idea de encontrar el error aquí?

CÓDIGO:

$cr=$xls->getActiveSheet()->getHighestRow(); 
    $cn=PHPExcel_Cell::columnIndexFromString($xls->getActiveSheet()->getHighestColum‌​n()); 
    for ($z=2; $z<=$cr; $z++) { 
     $class=($z%2)?"odd":"even"; 
?> 
    <tr class="<?php echo $class; ?>"> 
    <?php for ($s=0; $s<$cn; $s++) { 
     $tmp=$xls->getActiveSheet()->getCellByColumnAndRow($s,$z)->getValue();?> 
     <td><?php echo $tmp; ?></td> 
    <?php } ?> </tr> 
<?php } ?> 
+0

¿Puedes mostrar tu código para leer la fila? –

+0

$ cr = $ xls-> getActiveSheet() -> getHighestRow(); $ cn = PHPExcel_Cell :: columnIndexFromString ($ xls-> getActiveSheet() -> getHighestColumn()); for ($ z = 2; $ z <= $ cr; $ z ++) { $ class = ($ z% 2)? "Impar": "par"; ?> getActiveSheet() -> getCellByColumnAndRow ($ s, $ z) -> getValue(); ?> user1465889

+0

Puede editar su respuesta y escribir código. Ver: http://stackoverflow.com/editing-help –

Respuesta

-1

Esto no es un error. Una hoja de cálculo "vacía" todavía contiene muchas celdas vacías. Excel generalmente tiene 65536 líneas y 256 columnas.

+2

Pero luego todos los archivos deberían mostrar este comportamiento - Tengo varios otros archivos que terminan donde espero que terminen - con la última fila en la que se ingresaron los datos. – user1465889

+0

Hmmm ... intente exportar a cvs y luego vuelva al formato excel. –

1
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow(); 

o

$objPHPExcel->setActiveSheetIndex(0)->calculateWorksheetDimension(); 

que devuelve un rango como una cadena como A1: AC2048

aunque se arrastran filas y columnas en blanco se incluyen en estos.

o puede utilizar los iteradores para recorrer las filas y columnas existentes para obtener cada celda dentro del rango de hojas de cálculo utilizadas. Consulte /Tests/28iterator.php en la distribución de producción para ver un ejemplo. Los iteradores se pueden configurar para ignorar espacios en blanco.

Fuente:

How to find out how many rows and columns to read from an Excel file with PHPExcel?

+0

Uso getHighestRow(), y obtengo 65535 para algunos archivos, y la última fila correcta para otros, sin un patrón desfavorable. – user1465889

5

Todo lo que necesita es una celda en blanco, y el último col/fila puede ser mucho mayor de lo esperado. Incluso el diseño o los estilos de impresión pueden falsificar los valores más altos almacenados. Abra el archivo en MS Excel y presione Ctrl-End, y lo llevará a la última celda que reconoce Excel.

Además de getHighestRow() y getHighestColum(), también hay un método (más lento) getHighestDataRow() y getHighestDataColumn() que identifica la fila y columna más alta que en realidad contienen datos de celda.

+0

Gracias por la pista; También me ayudó cargar y salvar en OpenOffice. – user1465889

0

Mark Baker tiene razón. Así que me fijo tema en mi final siguiendo los pasos:

  1. hacer ctrl + fin desde la primera celda en blanco después de la última fila que disponen de datos. p. entonces, si tengo la última fila de datos, estoy de A3 a D3. Voy a hacer ctrl_end en la celda A4

    • Esto pondrá de relieve que el número de filas en blanco
  2. haga clic derecho en las filas seleccionadas (filas seleccionadas siguiendo primer paso) y seleccione "Borrar".

  3. se abrirá una ventana emergente. seleccione "Toda la fila" y haga clic en el botón Aceptar

Por lo tanto, cualquiera que sea su código tiene que cargar datos de Excel, solo leerá las filas que tengan datos.

Cuestiones relacionadas