PHP Ejemplos

Read file Excel PHPSpreadSheet (Ejemplo completo)

Leer archivo de Excel con PHP con PHPSpreadSheet

Read file Excel use PHPSpreadSheet. Vamos a ver 2 ejemplos trabajar con Excel y PHP vamos a usar un documento de Excel (XLSX) preparado para poder leerlo usando la librería PHPSpreadSheet y PHP.

Read file Excel PHPSpreadSheet
Read file Excel PHPSpreadSheet

Abrir archivo de Excel con PHP

Para leer un archivo excel primero necesitamos leer el archivo almacenado en el disco. Por lo tanto, debemos de  llamar a IOFactory::load("ruta_del_archivo.xlsx")

Para este artículo y ejemplo vamos a trabajar con un archivo con extensión xlsx, porque es muy recomendado.

En caso de probar y actualizar el script, recuerda instalar las dependencias con composer install.

Obtener contenido de fichero Excel XLSX con PHP

Hojas del documento de Excel

Un libro de Excel puede tener múltiples hojas, por eso es que a veces a los documentos se les dice “libros”.

El número de hojas en un libro puede ser determinado con la función $documento->getSheetCount() que devuelve un número entero.

Relacionado  Star Rating System con Ajax, PHP y MySQL

$hojaActual = $documento->getSheet($indice);

La numeración va comenzando en 0. Sin embargo, la hoja con índice 0 vendría a ser la primer hoja.

Read file Excel PHPSpreadSheet

a) Modo lectura array

Si deseamos leer un archivo de Excel podemos aplicar este ejemplo que devuelve la información en Array PHP para poder darle un uso adecuado.

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();

$inputFileType = 'Xlsx';
$inputFileName = './Ejemplo/prueba.xlsx';

/** Create a new Reader of the type defined in $inputFileType **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/** Advise the Reader that we only want to load cell data **/
$reader->setReadDataOnly(true);

$worksheetData = $reader->listWorksheetInfo($inputFileName);

foreach ($worksheetData as $worksheet) {

$sheetName = $worksheet['worksheetName'];

echo "<h4>$sheetName</h4>";
/** Load $inputFileName to a Spreadsheet Object **/
$reader->setLoadSheetsOnly($sheetName);
$spreadsheet = $reader->load($inputFileName);

$worksheet = $spreadsheet->getActiveSheet();
$arr = $worksheet->toArray();
echo '<pre>',print_r($arr,1),'</pre>';

}
?>

Salida en el navegador

Si ejecutamos el fichero en un servidor web, a través de un navegador el resultado sería el siguiente. Para este ejemplo hemos usado un archivo llamado prueba.xlsx para que muestre el contenido del archivo.

Hoja01

Array
(
    [0] => Array
        (
            [0] => Mouse Inalambrico
            [1] => Mouse HP 200 Inalámbrico Negro
            [2] => 300
        )

    [1] => Array
        (
            [0] => Monitor HY
            [1] => Conectar la salida DVI de tu ordenador
            [2] => 250
        )

    [2] => Array
        (
            [0] => Teclado HB
            [1] => Multifuncional e idioma español
            [2] => 800
        )

    [3] => Array
        (
            [0] => Cargador SONY
            [1] => Transfiere y carga dispositivos con los cables micro USB
            [2] => 450
        )

    [4] => Array
        (
            [0] => Camara web
            [1] => Cámaras Web HD con video nítido a 720p u 820p
            [2] => 650
        )

)

b) Usando Foreach PHP

En el ejemplo anterior hemos logrado mostrar el contenido del archivo Excel su contenido a través de la función PRINT_R del lenguaje PHP.

Relacionado  Pagos recurrentes con PayPal PHP

Ahora, para darle una estructura de tabla usaremos el ciclo FOREACH para poder iterar las celdas de la tabla HTML.

Además, podemos usar la librería BootStrap para darle estilos a los resultados en el navegador.

<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("./Ejemplo/prueba.xlsx");
$worksheet = $spreadsheet->getActiveSheet();

echo '<table class="table table-striped"><tbody>' . PHP_EOL;
foreach ($worksheet->getRowIterator() as $row) {
echo '<tr>' . PHP_EOL;
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE); 
// Esto recorre todas las celdas,
// incluso si no se establece un valor de celda.
// De forma predeterminada, solo las celdas que tienen un valor
// se repetirá en la iteración.
foreach ($cellIterator as $cell) {
echo '<td>' .
$cell->getValue() .
'</td>' . PHP_EOL;
}
echo '</tr>' . PHP_EOL;
}
echo '</tbody></table>' . PHP_EOL;

?>

Si ejecutamos el script anterior, en el navegador mostrara una tabla HTML, similar a lo que tenemos en el fichero de Excel.

Relacionado  Redireccionar sitio web con PHP, HTML (Explicado)

Ya queda por parte de nosotros darle estilos CSS a los resultados en el navegador web.

Mouse Inalambrico Mouse HP 200 Inalámbrico Negro 300
Monitor HY Conectar la salida DVI de tu ordenador 250
Teclado HB Multifuncional e idioma español 800
Cargador SONY Transfiere y carga dispositivos con los cables micro USB 450
Camara web Cámaras Web HD con video nítido a 720p u 820p 650

Conclusión

En este corto articulo hemos aprendido a leer un fichero Excel a través de la librería PHPSpreadSheet que es muy recomendado para trabajar con ficheros Excel, recordemos que esta librería tiene soporte constante y una muy buena documentación que nos da la posibilidad de no quedarnos atascados en un futuro.

Hemos visto dos ejemplos tanto en resultados ARRAY y usando el ciclo FOREACH para iterar las celdas y mostrarlo en una tabla HTML.

La curva de aprendizaje para la implementación de esta librería es muy baja lo que lo convierte en el preferido entre los programadores.

Por último, se podría usar para ver un demo de la información antes de importar a MySQL. Además, pueden dar un sin fin de usos.

Espero que la explicación les ayude para que puedan implementar en sus proyectos web.

Descarga 204 Script y Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba