Necesito usar PHPExcel
con un proyecto Symfony2
. ¿Alguien sabe cómo configurar el proyecto correctamente para usar la biblioteca? ¿Debo ponerlo en el directorio de proveedores? ¿Qué debería cambiarse en los archivos de configuración, etc.?Cómo usar PHPExcel correctamente con Symfony 2
Respuesta
Si está utilizando el compositor para gestionar su proyecto, sólo se puede cambiar el archivo composer.json:
"autoload": {
"psr-4": {
"": "src/",
"": "vendor/phpoffice/phpexcel/Classes/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
A continuación, agregue
use PHPExcel;
use PHPExcel_IOFactory;
a su archivo de controlador, y se puede utilizar el PHPExcel como este:
$objPHPExcel = new PHPExcel();
Espero que ayude.
- Copie la biblioteca en el directorio de sus proveedores.
Configurar cargador automático en su archivo de arranque:
$loader->registerPrefixes(array( // Swift, Twig etc. 'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel' ));
eso es todo.
En realidad, la mejor solución es utilizar https://github.com/liuggio/ExcelBundle. Intenté usar la solución de @ Crozin, pero todavía recibía un error sobre IOFactory :: createWriter. Espero que esto ayude, Simone
En realidad, para hacerlo bien es necesario seguir los siguientes pasos:
- editar el archivo
deps
y añadir la dependencia de laPHPExcel
[PHPExcel] git=http://github.com/PHPOffice/PHPExcel.git target=/phpexcel version=origin/master
Ejecutar
php bin/vendors install
con el fin de instalar todas las dependencias faltantes (PHPExcel
en nuestro caso)actualización prefijos sección en
app/autoload.php
:
$loader->registerPrefixes(array( // ... 'PHPExcel' => __DIR__.'/../vendor/phpexcel/Classes', ));
- Listo. Ahora, se puede usar en el controlador (código basado en
PHPExcel
ejemplo deTests/01simple-download-xls.php
) de su paquete:
<?php
namespace Demo\MyBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use PHPExcel;
use PHPExcel_IOFactory;
class DemoController extends Controller
{
public function demoAction()
{
$response = new Response();
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Me")
->setLastModifiedBy("Someone")
->setTitle("My first demo")
->setSubject("Demo Document");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Set active sheet index to the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="demo.xls"');
$response->headers->set('Cache-Control', 'max-age=0');
$response->prepare();
$response->sendHeaders();
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit();
}
}
Recibo el error Variable indefinida: respuesta – Sadikhasan
simplemente agregue '$ respuesta = new Respuesta();' al comienzo de la función e incluir 'use Symfony \ Component \ HttpFoundation \ Response;' – gakhov
Nunca utilizaría el operador "nuevo" en el controlador Symfony2 porque, básicamente, usted está diciendo: "Nunca probaré esta controladora en forma individual, ni daré a mis compañeros de trabajo una oportunidad de probar esto. Esto funcionará, pero es una mala, mala práctica – alchemication
con el compositor (ya Symfony2.1) que es muy fácil, sólo tiene que modificar el composer.json
.
¡Ya no es necesario que registres el espacio de nombres!
Sólo dos cosas, a destacar:
- se refieren a las etiquetas de GitHub, sólo he encontrado un Soltion con el
package
tipo - cuando se cambia algo en el composer.json relacionados con la materia de carga automática de clases, se tiene que quitar el directorio completo en el
vendor
dir
Aquí está el enlace relacionado: use PHPExcel with composer and Symfony2.2
A partir de Symfony 2.3, ahora se puede hacer esto:
...
"require": {
...
"phpoffice/phpexcel": "dev-master"
...
},
...
A continuación, sólo funcionan composer update
y dependencias se resolverán automáticamente.
O puede hacer composer require phpoffice/phpexcel:dev-master
si no quiere meterse con el archivo composer.json
.
- 1. Symfony 2 - Trabajar con activos
- 2. symfony redirigir con 2 parámetros
- 3. ¿Cómo usar las tablas Symfony 1.4 sfGuardUser con Symfony 2 SecurityBundle?
- 4. Cómo usar Symfony 2 Container en una aplicación heredada
- 5. Cómo guardar en Symfony 2?
- 6. Symfony 2 validador único
- 7. Servicio Symfony 2 con varias instancias?
- 8. traducible junto con Symfony 2 formas
- 9. Symfony 2 campos adicionales
- 10. Symfony 2 Formulario con lista de selección
- 11. Symfony 2 rutas lesscss
- 12. Activo Twig con CDN utilizando Symfony 2
- 13. Autenticación Symfony 2 con (doctrina) Entidad
- 14. Symfony 2: cómo pasar datos a formBuilder?
- 15. Symfony 2 - ¿Cómo eliminar un paquete?
- 16. Symfony 2 formularios embebidos
- 17. Symfony 2 + herencia de Doctrine 2 +
- 18. 2 Nivel Entidad carpeta en Symfony 2
- 19. Symfony 2 + Twig variables globales
- 20. Symfony 2 Plantilla anulación sonataAdminBundle
- 21. Symfony 2 en hosts virtuales
- 22. Cómo habilitar ENUM en Symfony 2/Doctrina
- 23. Symfony 2 Dependency Injection & autowiring
- 24. Symfony 2 sin acceso SSH
- 25. Anulando excepciones de Symfony 2?
- 26. symfony 2 equivalente para la función url_for() en symfony 1
- 27. múltiples formas de mismo tipo - Symfony 2
- 28. Symfony 2 Proxy para reemplazar iterativamente el proyecto Symfony 1.4
- 29. carga de archivos múltiples Symfony 2
- 30. Marco Php: Symfony 1, Symfony 2 o Yii
Sí, esta es la manera moderna. En 2011 las cosas fueron un poco diferentes :) – YakobeYak