¿Cómo abrir un archivo de Excel con PHPExcel para leer y escribir?

2 minutos de lectura

Estoy usando la biblioteca PHPExcel y estoy creando objetos xls para escribir o leer:

PHPExcel_IOFactory::createReaderForFile('file.xlsx')
PHPExcel_IOFactory::createWriter('Excel2007')

¿Cómo puedo abrir un archivo XLSX para leer y escribir?

avatar de usuario
marca panadero

Cargas un archivo en PHPExcel usando un lector y el método load(), luego guardas ese archivo usando un escritor y el método save()… pero PHPExcel en sí mismo desconoce la fuente del objeto PHPExcel… no lo hace No importa si lo cargó desde un archivo (o qué tipo de archivo) o si lo creó a mano.

Como tal, no existe el concepto de “apertura para lectura/escritura”. Simplemente lea el archivo por nombre y guárdelo con el mismo nombre de archivo. Eso sobrescribirá el archivo original con cualquier cambio que haya realizado en su secuencia de comandos.

EDITAR

Ejemplo

error_reporting(E_ALL);
set_time_limit(0);

date_default_timezone_set('Europe/London');
set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');

include 'PHPExcel/IOFactory.php';

$fileType="Excel5";
$fileName="testFile.xls";

// Read the file
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($fileName);

// Change the file
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Hello')
            ->setCellValue('B1', 'World!');

// Write the file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($fileName);

Y puedo sugerirle que lea la documentación y mire el código de muestra en /Tests

  • ¿Podría escribir un código de muestra para explicar esto? no entiendo cuando hablas de using a reader and the load() method, then save that file using a writer and the save() method está hablando de dos objetos diferentes (un lector, un escritor) pero necesito abrir el archivo, modificar algunas celdas y guardar ese mismo objeto en un archivo.

    – Petruza

    10 de enero de 2012 a las 19:46

  • esto puede causar un “Tamaño de memoria permitido de xxxx bytes agotado”, ¿se puede solucionar?

    – daver

    14 de agosto de 2013 a las 14:09

  • Probablemente se pueda arreglar mirando los consejos y recomendaciones documentados para el manejo de la memoria, como el uso del almacenamiento en caché de celdas.

    – Marcos Baker

    14/08/2013 a las 14:40

  • Gracias @MarkBaker.

    – Mubín

    26 de noviembre de 2016 a las 6:18

  • ¡Funciona perfectamente!

    – Thanh Nguyen

    7 de agosto de 2017 a las 10:32

¿Ha sido útil esta solución?