Portada » Lenguaje PHP » Librería PHPSpreadSheet » Read file Excel PHPSpreadSheet (Ejemplo completo)

Read file Excel PHPSpreadSheet (Ejemplo completo)

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.

$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.

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.

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

Mouse InalambricoMouse HP 200 Inalámbrico Negro300
Monitor HYConectar la salida DVI de tu ordenador250
Teclado HBMultifuncional e idioma español800
Cargador SONYTransfiere y carga dispositivos con los cables micro USB450
Camara webCámaras Web HD con video nítido a 720p u 820p650

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

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

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

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad