NOTA: Está libreria esta desactualizada, puedes probar con esta otra que es sucesora directa PHPSpreadsheet, te explicamos cómo usarlo para escribir en archivos .xlsx
Creo que el título lo dice todo. Esta librería permite leer y manipular el contenido de una hoja de cálculo hecha con Microsoft Excel. Vamos directo al grano y veamos un ejemplo. Usaremos Microsoft Office Excel 2007 para la hoja de cálculo, ósea el archivo tendrá la extensión xlsx. También usaremos la versión 5.2.x de PHP.
1. Descargue la libreria PHPExcel
Descargamos la ultima versión. Después de descomprimirla ubicamos la carpeta Clases y la movemos a una carpeta donde pondremos nuestro ejemplo para este caso se llamará phpexcel_ejemplo. De tal manera que quede así: \ruta_servidor\phpexcel_ejemplo\Clases.
Actualización:
La última versión de PHPExcel, 1.8.1, se lanzó en 2015. El proyecto quedó oficialmente en desuso en 2017 y se archivó permanentemente en 2019. El proyecto no se ha mantenido durante años y ya no se debe usar. Todos los usuarios deben migrar al sucesor directo: PhpSpreadsheet (Tutorial).
2. Creamos un documentos de Excel
La hoja de cálculo tendrá el siguiente formato: (descargar archivo de ejemplo). La ubicamos en la carpeta phpexcel_ejemplo.
3. Creamos la interfaz web
Mediante HTML creamos una formulario para el ingreso de los valores, y también escribimos código para usar la librería PHPExcel. Este archio lo guardamos con el nombre de index.php en la carpeta phpexcel_ejemplo.
<?php /** Incluir la ruta **/ set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/'); /** Clases necesarias */ require_once('PHPExcel.php'); require_once('PHPExcel/Reader/Excel2007.php'); // Variables de la página $_VIEWDATA = array( 'v_precioTotal' => 0, 'v_descuento' => 0, 'v_precioFinal' => 0 ); // Petición de cálculo? if (isset($_REQUEST['boton_calcular'])) { // Cargando la hoja de cálculo $objReader = new PHPExcel_Reader_Excel2007(); $objPHPExcel = $objReader->load("calculo.xlsx"); // Asignar hoja de calculo activa $objPHPExcel->setActiveSheetIndex(0); // Asignar data $objPHPExcel->getActiveSheet()->setCellValue('automatico', $_REQUEST['transmision_Automatica']); $objPHPExcel->getActiveSheet()->setCellValue('cuero', $_REQUEST['asientos_Cuero']); $objPHPExcel->getActiveSheet()->setCellValue('suspension', $_REQUEST['suspension']); // Calculos $_VIEWDATA['v_precioTotal'] = $objPHPExcel->getActiveSheet()->getCell('total')->getCalculatedValue(); $_VIEWDATA['v_descuento'] = $objPHPExcel->getActiveSheet()->getCell('descuento')->getCalculatedValue(); $_VIEWDATA['v_precioFinal'] = $objPHPExcel->getActiveSheet()->getCell('final')->getCalculatedValue(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Ejemplo</title> </head> <body> <form id="formulario" method="post" name="formulario" action="index.php"> <table> <tr> <th>Transmisión automática :</th> <td> <select id="transmision_Automatica" name="transmision_Automatica"> <?php if(isset($_REQUEST['transmision_Automatica'])) { ?> <option value="<?php echo $_REQUEST['transmision_Automatica']; ?>" selected="selected"><?php echo $_REQUEST['transmision_Automatica']; ?></option> <?php } ?> <option value="No">No</option> <option value="Si">Si</option> </select> </td> </tr> <tr> <th>Asientos de cuero:</th> <td> <select id="asientos_Cuero" name="asientos_Cuero"> <?php if(isset($_REQUEST['asientos_Cuero'])) { ?> <option value="<?php echo $_REQUEST['asientos_Cuero']; ?>" selected="selected"><?php echo $_REQUEST['asientos_Cuero']; ?></option> <?php } ?> <option value="No">No</option> <option value="Si">Si</option> </select> </td> </tr> <tr> <th>Suspensión:</th> <td> <select id="suspension" name="suspension"> <?php if(isset($_REQUEST['suspension'])) { ?> <option value="<?php echo $_REQUEST['suspension']; ?>" selected="selected"><?php echo $_REQUEST['suspension']; ?></option> <?php } ?> <option value="No">No</option> <option value="Si">Si</option> </select> </td> </tr> <tr> <th> </th> <td> <input id="boton_calcular" name="boton_calcular" type="submit" value="Calcular" /> </td> </tr> </table> </form> <?php if (isset($_REQUEST['boton_calcular'])) { ?> <h2>Detalles del Precio</h2> <p>Basado en tus preferencias, el precio de tu carro será S/. <?php echo number_format($_VIEWDATA['v_precioFinal'], 2); ?> Nuevos Soles.</p> <table> <tr> <th>Precio Total:</th> <td><?php echo number_format($_VIEWDATA['v_precioTotal'], 2); ?> Nuevos Soles</td> </tr> <tr> <th>Descuento:</th> <td><?php echo number_format($_VIEWDATA['v_descuento'] * 100, 2); ?>%</td> </tr> <tr> <td colspan="2"><hr noshade="noshade"></hr> </tr> <tr> <th>Total Final:</th> <td><?php echo number_format($_VIEWDATA['v_precioFinal'], 2); ?> Nuevos Soles</td> </tr> </table> <p><a href="index.php">Calcular nuevo precio</a></p> <?php } ?> </body> </html>
Puedes ver: Leer y escribir en hojas de cálculo con PHP
4. A probar …!
Vamos al navegador web y escribirmos http://localhost/phpexcel_ejemplo/index.php y tendremos una interfaz con los datos que obtenemos de la hoja de cálculo.
Seguramente se nos ocurrirá muchas cosas en la cual emplear está interesante librería. ¿Y que tal si la combinamos con AJAX?. La librería PHPExcel contiene documentación detallada para usarla correctamente, además de muchos otros ejemplos.
Hola,
Muy interesante el artículo. De casualidad puedes subir el archivo phpexcel_ejemplo.xlsx de nuevo?
Muchas gracias,
A.P.
hola, esta muy bueno.
Porfa necesito que me digan como puedo bloquear algunas celdas de excel para que no sean modificadas por que ahi ira texto predeterminado mientras que en otras celdas el usuario podra editar datos que nos interesan???
Gracias
Q bueno esta este articulo.Solo q no manada la liga para descargar el archivo de ejemplo. Xfa proporcionamelo para ponerlo en practica.
Enlace corregido 🙂
Amigos como podria hacer para cobinar la lectura y la escritura..
es decir necesito leer el archivo excel y luego de acuerdo a celdas especifcas escribirle informancion y que quede guardada en ese mismo archivo que lei anteriormente..
Si me puede ayudar se los agradeceria mucho
estimados….sigo todos los pasos descritos, pero al hacer correr el codigo me dice “parse error ” en la siguiente parte del codigo:
// Asignar data
$objPHPExcel->getActiveSheet()->setCellValue(‘automatico’, $_REQUEST[‘transmision_Automatica’]);
$objPHPExcel->getActiveSheet()->setCellValue(‘cuero’, $_REQUEST[‘asientos_Cuero’]);
$objPHPExcel->getActiveSheet()->setCellValue(‘suspension’, $_REQUEST[‘suspension’]);
// Calculos
$_VIEWDATA[‘v_precioTotal’] = $objPHPExcel->getActiveSheet()->getCell(‘total’)->getCalculatedValue();
$_VIEWDATA[‘v_descuento’] = $objPHPExcel->getActiveSheet()->getCell(‘descuento’)->getCalculatedValue();
$_VIEWDATA[‘v_precioFinal’] = $objPHPExcel->getActiveSheet()->getCell(‘final’)->getCalculatedValue();
}
si alguien me puede ayudar para no seguir con el mismo problema, se lo agradeceria mucho.
saludos, he encontrado muchos ejemplos pata trabajar con excel desde php, pero casi todos solo tocan la parte de lectuta. Ahora bien, estoy buscando la forma de leer un archivo xls ya existente y escibir en celdas especificas, pero no logro grabar dichos cambios en el mismo archivo, si sabes de un codigo de ejemplo o link te lo agradeceria.
PD. tu ejemplo esta bueno pero me da error
Fatal error: Class ‘ZipArchive’ not found in C:\wamp\www\Excel\PHPExcel\Reader\Excel2007.php on line 202
Hola amigo estoy trabajando PHPExcel con codeigniter, y hasta los momentos genero el xls con
PHPExcel_Writer_Excel5 pero quiero que al generarlo me de la opcion de abrir o guardar, hasta ahora lo guarda en la misma carpeta del controller donde formo el xls.
Me parece que, no hay tutoriales REspecto a La Modificacion de Archivos XLS, pero si hay muchos de como crear archivos xls y xlsx, Serie bueno que se hiciera un Tutorial de como y con que libreria class, modificar ojo : Modificar Archivos ya existentes y manipular sus datos
ok
hola, disculpa se podria trabajar con una consulta a base de datos mysql y generar el reporte en un xls, con esta libreria?, muchas gracias, espero me respondan, es de suma importancia
Cabe especificar que es necesaria la extensión ZIP del PHP, de otra forma no funcionará.
Podrias dejar un ejemplo live??
no funciona…no se que zip pide
gracias
Saludos zInNeR sabes tengo el problema de varios con la extensión .ZIP y no se como habilitar esa extensión en mi php.ini no la encontre…
Agradeceria mucho una ayuda.
Hola no me funciona, estas seguro que todo esta bien.
Hola, quiero saber si todo esta bien
hola resulta que tengo lista la clase (o librería) pero cuando quiero generar informes de verdad (mas de 2000 registros) me salta el error Allowed memory size, yo se que se debe a la capacidad en el php.ini pero el archivo que se genera con 1800 registros es de 85K. Mi pregunta es como hago para que mientras se esta generando el archivo controlar el tamaño…
Podría generar el archivo por partes (primeros 1000 – genero el archivo. Otros 1000 abro el archivo y los anexo repitiendo este ultimo paso)
andrex_xp@hotmail.com si hay algun mago que me ayude. Gracias
Hola Chau, chau
Fatal error: Class ‘ZipArchive’ not found in C:\AppServ\www\phpexcel_ejemplo\Classes\PHPExcel\Reader\Excel2007.php on line 229
tengo el mismo erro que “guarus”
2009-04-04 13:21:03 7
que tiene… Da expliacaciones mas detalladas… Sino para que nos sirve
PHP Information Version 5.2.3
esta es la version de mi php y no puedo habilitar las opciones
“* PHP extension php_zip enabled
* PHP extension php_xml enabled”
porque no las tengo….
Hola como estas??
Sabes si puedo manipular archivos .xlsx con ésta extensión o ¿cómo puedo lograrlo?.
Saludos
hice todo y me salio esto
Fatal error: Class ‘ZipArchive’ not found in E:\Docs\luis\j\www\P\excel2\phpexcel_ejemplo\Classes\PHPExcel\Reader\Excel2007.php on line 324
Oye no sabras como pasar un archivo CSV a XLS con esta libreria por mas que le intento no me lo hace y de hecho la libreria trabaja estupendamente, pero hacer conversion de CSV a XLS no se presta.
hola, gracias por esta aplicacion. Debo decirte que no se nada de php. así que me preguntaba si existe alguna aplicacion que lea un excel y lo codifique en php (es decir la creacion de formulario etc) así luego con el phpexcel poder leerlo en la web. No sé si soy claro. si puedes entra en mi pagina http://www.ejiba.com.ar y en el boton biblioteca –> herramientas, fijate que tengo unas aplicaciones tipo excel pero que son medias precarias. La idea es poder colocar otros cálculos mas avanzados y con macros etc.
Bueno gracias y espero tu respuesta.
Hola,
Como puedo conocer el número de filas que contiene el excel leido mediante $objReader->load(“calculo.xlsx”); ??
Gracias por los ejemplos, me ayudaron mucho.
oyes bro. tu articulo esta interesante. intento ponerlo en practica, pero aun no lo consigo. qise leer almenos la primera celda para ir avanzando.
Tengo el siguiente codigo:
require_once('PHPExcel.php');
require_once('PHPExcel/Reader/Excel2007.php');
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load("calculo.xlsx");
$objPHPExcel->setActiveSheetIndex(0);
echo $objWorksheet->getCellByColumnAndRow(1,2)->getValue();
segun la documentacion la ultima puedes obtener el valor de una celda en espesifico pero me arroja el siguente error:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR, expecting ‘,’ or ‘;’ in /var/www/html/pruebas/zonas/index.php on line 7
que opinas. quedo en espera de tus comentarios.
Hola,resulta que tengo genereados unos archivos xls desde un servidor windows con appache y todo bien, resulta que lo instalo en un servidor ubuntu con php 5.2.10 y no me generaba nada , despues logre q lo generara con formato xlsx., pero si el reporte supera las 2 o 3 paginas tampoco lo genera, como que le falta establidad. pero en server windows anda perfecto, alguna sugerencia ??
Buenas,
Muchachos, llevo 3 días tratando de encontrar una librería que me permita coger 1 archivo de EXCEL YA Existente con datos….y poder abrirlo, recorrerlo e insertarle mis datos en unas celdas determinadas.
Para LEERLO Probé con el Spreadsheet_Excel_Reader y efectivamente me lo abre, me lo lee, lo recorre… y perfecto.
Pero para ESCRIBIR en Ese archivo .xls existente obviamente traté de usar Spreadsheet_Excel_Writer y me lo abre, pero no sé como recorrerlo y mucho mas importante REESCRIBIR Cualquier CELDA que yo quiera.
Veo que Exploran y comentan de PHPEXCEL y ya medio me leí la documentación pero no encuentro la parte que pueda abrir 1 .XLS existente con Datos y Poder Modificarlo.
Gracias, si tienen información que me pudiera ayudar agilizar ésto se los agradecería.
Saludos Christian – Colombia
Hola, al igual que wooker, estoy buscando la forma de abrir un .xls con datos y poder seguir aumentando mas datos.
Lo unico que conseguí fue leer todo los datos anteriores, realizar mi cambio, y grabar todo de nuevo (incluyendo datos anteriores que no modifiqué).Esto es lo que no deseo.
El problema que tengo es que quiero guardar una hoja con casi 900000 filas, pero por cuestion de memoria no puedo hacerlo. Lo que quiero hacer es poder guardar 500filas, luego abrir y guardar 500 más y así.
Lo unico que logré es que en cada graba se envíen de nuevo todos los datos, lo que no me sirve.
Si saben como resolver esto, se los agradeceré.
Si lograste solucionar tu problema, dinos como le hiciste.
te dejo mi correo ruiztellez@gmail.com
Buenas tardes amigo. Segui su explicacion al pie de la letra y todo funciono correctamente pero tengo un problema: en mi hoja de excel tengo columnas tipo fecha, cuando ejecuto mi programa, los metodos getCalculatedValue() o getValue() me devuelven un numero. ¿Que hago para que me devuelva la fecha integramente?
Gracias de antemano.
Alberto. (Venezuela)
En este artículo explico como lograr leer archivos EXCEL con PHP, de una manera fácil y rápida. El código está probado y ejecutandose en varios proyectos serios sin nigún problema. Saludos
La URL del artículo para leer archivos Excel con PHP es esta:
http://www.parentesys.es/Leer-archivos-EXCEL-en-PHP-32811
Gracias! Después de buscar mucho, este tutorial fue el que me ayudó.
Saludos
Excelente!!! De toda la info en la red, este es el unico donde encontre algo que fuera bien explicado y que funcionara.
Esta muy bueno el ejemplo, creo que con el puedo hacer lo que ocupo, llamar un excel, leerlo y pasarle los datos a una funcion para guardar en una DB
Al fin alguien conciso y que no escribe boludeces. Te felicito!!!
PERDI MI TIEMPO EN ESTE ARTICULO, NO ME FUNCO PARA NADA Y AHORA MI JEFE ME ESTA PIDIENDO RESULTADOS, YA FUI FUCKING A TODOS :@
aqui una pagina que recorre cualquier archivo y lo muestra
load(“Cadena_Funcional.XLS”); //reemplazar por el nombre del archivo
/** Abriendo la hoja que contiene la informacion */
$objPHPExcel->setActiveSheetIndex(0);
echo ‘
/** obteniendo el numero total de filas y columnas */
$rows=$objPHPExcel->getActiveSheet()->getHighestRow();
$cols=PHPExcel_Cell::columnIndexFromString($objPHPExcel->getActiveSheet()->getHighestColumn());
/** recorriendo la hoja */
for($i=1;$i<=$rows;$i++)
{ echo '
for ($j=0;$jgetActiveSheet()->getCellByColumnAndRow($j,$i)->getValue();
echo ‘
‘;
}
echo ‘
‘;
}
echo ‘
‘;
?>
Una consulta: esto funciona en un apache montado sobre linux?, ya que tengo instalados todos los requerimientos, apache, php, php-zip, php-gd2, php-xml, etc, pero cuando trato de hacer el ejemplo solo muestra una pagina en blanco, cuando hago los ejemplos que se indican en el fichero install,, aparece lo siguiente:
23:08:34 Create new PHPExcel object 23:08:34 Set properties 23:08:34 Set default font 23:08:34 Add some data 23:08:34 Rename sheet 23:08:34 Write to Excel2007 format 23:08:34 Peak memory usage: 4.75 MB 23:08:34 Done writing file.
cualquier ayuda se agradece.
NN no respecto a tu duda en linux? ya revisaste los permisos?
Gente, yo me encontré con un problema al tratar de acceder por celdas a travez de las columnas, puesto que son por letras y no por números, me toco hacer mi propia solución, si alguien mas conoce otra solución mas fácil, le agradecería hacermelo saber.
Mi solución fue hacer mi propio sistema numérico con letras. un saludo
PRIVATE FUNCTION letraIncrement($str)
{
$len = strlen($str);
/*
$iA= substr($str, 0,strlen($str)-1);//obtengo todos los caracteres menos el ultimo
$iB = substr($str, -1,strlen($str));//obtengo el ultimo caracter de la cadena
*/
for($o=$len-1;$o>=0;$o–)
{
if($str[$o] != “Z”)
{
if($this->letrainc($str[$o])!=FALSE)//condicion de seguridad
{
$str[$o] = $this->letrainc($str[$o]);
break;
}
else
throw new Exception(“Error: “.$str.” no es una cadena de caracteres, esta es una funcion para incrementar letras, no numeros”);
}else{
if($o==0)
$str=$this->letrainc($str[$o]).substr($str, 1,$len);//AA.[todos los caracteres menos el 1er]
else
$str[$o]=”A”;
}
}
return $str;
}
donde la función letrainc me devuelve la letra consecutiva a la que envie:
ejemplo si envio “A”, me devuelve “B”, y si envio “Z” me devuelve “AA”
Espero les saque de problemas
Gente, yo me encontré con un problema al tratar de acceder por celdas a travez de las columnas, puesto que son por letras y no por números, me toco hacer mi propia solución, si alguien mas conoce otra solución mas fácil, le agradecería hacermelo saber.
Mi solución fue hacer mi propio sistema numérico con letras. un saludo
PRIVATE FUNCTION letraIncrement($str)
{
$len = strlen($str);
/*
$iA= substr($str, 0,strlen($str)-1);//obtengo todos los caracteres menos el ultimo
$iB = substr($str, -1,strlen($str));//obtengo el ultimo caracter de la cadena
*/
for($o=$len-1;$o>=0;$o–)
{
if($str[$o] != “Z”)
{
if($this->letrainc($str[$o])!=FALSE)//condicion de seguridad
{
$str[$o] = $this->letrainc($str[$o]);
break;
}
else
throw new Exception(“Error: “.$str.” no es una cadena de caracteres, esta es una funcion para incrementar letras, no numeros”);
}else{
if($o==0)
$str=$this->letrainc($str[$o]).substr($str, 1,$len);//AA.[todos los caracteres menos el 1er]
else
$str[$o]=”A”;
}
}
return $str;
}
donde la función letrainc me devuelve la letra consecutiva a la que envie:
ejemplo si envio “A”, me devuelve “B”, y si envio “Z” me devuelve “AA”
Espero les saque de problemas
Hola amigo, tu articulo me sirvio de mucho, ya que me habian pedido leer un excel y pasarlo a un base de datos, todo iba muy bien en mi maquina local, pero al momento de subirlo al servidor de produccion no guarda nada y me dice que no encuentra el servidor… sabes si hay algo que configurar en el servidor, te comento que es linux.
Muchas gracias de antemano.
El ejemplo esta mal echo no funciona, hay que hacer varios cambios. Van a seguir perdiendo el tiempo.
HOla, como hago para implementar este codigo, tengo un formulario de busqueda, luego que hago la busqueda me muestra los resultados en una tabla html, en dicha tabla quiero tener un boton que me permita exportar el archivo a excel, como un reporte. quien me ayuda.
Hola. algunos comentarios dicen que no funciona este ejemplo. Podriais decirme como modificar el valor de una celda de fichero excel.xls.
gracias.
como hago para solucionar esto <b>Fatal error</b>: Class 'ZipArchive' not found in <b>C:\AppServ\www\reporteexcel\lib\PHPExcel\PHPExcel\Writer\Excel2007.php nadie a respondido y mas de 20 personas lo pergunta gracias.
Buenas,
Esta linea <strong>"Class ‘ZipArchive’ not found"</strong>, nos indica que esta clase -al parecer que usa la libreria PHPExcel- es necesaria. Hay que buscar en la documentacion en linea en la web de esta libreria.
Saludos
Muy buenas, perdonen una urgente consulta, utilizo el PHPExcel para cargar y recorrer el mismo y almacenar los datos en la base de datos POSTGRESQL, localmente en mi equipo funciona perfectamente, pero al ingresar la sistema y tratar de subir el mismo archivo desde otro equipo (PC) sale el error siguiente:
( ! ) Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open C:/ArchivosCarga/Enero 2011.xls for reading! File does not exist, or it is not readable.' in C:\wamp\www\IndicadoresEconomicos\Classes\PHPExcel\Shared\OLERead.php on line 80
( ! ) PHPExcel_Reader_Exception: Could not open C:/ArchivosCarga/prueba.xls for reading! File does not exist, or it is not readable. in C:\wamp\www\IndicadoresEconomicos\Classes\PHPExcel\Shared\OLERead.php on line 80
Call Stack
# Time Memory Function Location
1 0.0010 286664 {main}( ) ..\cIGas.php:0
2 0.0220 2283688 PHPExcel_Reader_Excel5->load( ) ..\cIGas.php:55
3 0.0220 2283896 PHPExcel_Reader_Excel5->_loadOLE( ) ..\Excel5.php:612
4 0.0225 2346480 PHPExcel_Shared_OLERead->read( ) ..\Excel5.php:1164
el codigo del OLERead.php en la linea 80 es:
line 78 // Check if file exists and is readable
line 79 if(!file_exists($sFileName) || !is_readable($sFileName)) {
line 80 throw new PHPExcel_Reader_Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable.");
line 81 }
por favor en que estoy haciendo mal…..
mi código es el siguiente:
//creando el lector
$objReader = PHPExcel_IOFactory::createReader($$ext);
//path del archivo
$path = 'C:/ArchivosCarga/prueba.xls';
//cargamos el archivo (en esta parte es lo que me genera el error)
$objPHPExcel = $objReader->load($path.$name);
Buenas, tengo un problema con PHPExcel, tengo un sito web que esta en linea en intranet, ingreso al mismo desde otra PC de la red y quiero recorrer los datos del archivo excel y almacenarlos en la base de datos pero me sale errores diferentes al seleccioanr un archivo de xls me sale el siguiente error:
PHPExcel_Reader_Exception: Could not open C:/ArchivosCarga/Enero2011.xls for reading! File does not exist, or it is not readable. in \PHPExcel\Shared\OLERead.php on line 80
o xlsx me sale el siguiente error:
PHPExcel_Reader_Exception: in \PHPExcel\Reader\Excel2007.php on line 347
Estoy utilizando como servidor el Wamp.
Por favor ayuda..
Gracias, me funcionó, pero… sólo lee el archivo, no lo escribe, pues no guarda los datos, ni los modifica… yo necesito leer datos y a la vez guardar nuevos cambios sobre el archivo existente… o sea que los cambios que se realicen sobre la hoja queden guardados. En este ejemplo efectúa las operaciones efectivamente pero la hoja original no sufre modificación.
hola solo que no me imprime el resultado, ya ejecutando el codigo por que?