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

Ver publicación nueva

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.