[Respondo desde mi posición de novato, así que igual se puede hacer de otra forma mejor].
Hay un plugin par leer el excel.
sfExcelReaderPlugin. Así que subes el excel al servidor con un formulario, lo lees y usas una tabla temporal donde guardar de forma manual los datos que lees. Así, incluso puedes aplicar validaciones o transformaciones a los datos. Cuando hayas leido todo correctamente, coges la tabla y la guardas en la tabla definitiva.
De esta forma (tabla auxiliar) evitas hacer un rollback si falla la importación.
Otra opción, si usas mysql, es usar a pelo
la sentencia LOAD DATA, pero aqui necesitas que el fichero esté en csv y además, te saltas toda la semantica de abstracción de la base de datos.
LOAD DATA LOCAL INFILE 'fichero.csv' INTO TABLE tabla_aux FIELDS
TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
(campo1, campo2, campo3);
S2