Después de cargar un objeto PHPExcel con mis datos, quiero mostrar los contenidos directamente en una variable php, en lugar de escribir en un archivo. Me he perdido el método para hacerlo, ya que parece que la única manera de guardar es guardar en el disco.¿Cómo escribo mi hoja de cálculo Excel en una variable, usando PhpExcel?
Respuesta
Puede usar una grabadora para guardar en el disco o guardarla en php: // output. Si es el último, podría usar el almacenamiento en búfer de salida para capturar ese resultado y luego almacenar en una variable ... sin embargo, no estoy seguro del motivo por el que querría hacer esto.
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_start();
$objWriter->save('php://output');
$excelOutput = ob_get_clean();
Desde PHPExcel escribe el archivo en el disco, en cualquier caso, si captura la salida estándar, lo que ocurre internamente es que el archivo se escribe en el disco, a continuación, leer en el disco (y eliminar), impreso por la salida estándar y luego capturado en el buffer de salida.
Es lo mismo que hacer:
$tmpfile = tempnam($tmp_dir, 'phpxltmp');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($tmpfile);
$excelOutput = file_get_contents($tmpfile);
unlink($tmpfile);
Esto es una especie de sentido común sobre cómo se podría abordar esto, pero hay muchas desventajas en este método. Su creación/uso del disco que requiere más operaciones/tiempo/espacio. Si este script se ejecuta en varias instancias o superposiciones, debe generar un archivo diferente por instancia. Esto puede conducir a problemas de corrupción/acceso. El OP había dicho directamente a una variable, no a un archivo y luego a una variable. – Mayhem
La respuesta ya aborda estos inconvenientes. 'tempnam' crea un archivo diferente por instancia, y dado que PHPExcel usa un archivo en cualquier caso, es el enfoque aparentemente" directo a variable "que es el menos eficiente de los dos. En muchos casos, sería posible utilizar 'readfile' o la gestión de flujo para evitar problemas de memoria y aumentar aún más el rendimiento. Si bien la respuesta aceptada parece ser más directa, lo cual es valioso en sí mismo, aún siento que * esta * debería ser la respuesta aceptada o una alternativa creíble. – LSerni
- 1. usando C# para seleccionar una hoja de cálculo en Excel
- 2. Copie una hoja de cálculo completa en una nueva hoja de cálculo en Excel 2010
- 3. Excel sigue cargando mi hoja de cálculo con un error
- 4. Hoja de cálculo de Excel de Excel utilizando EPPlus
- 5. Abrir archivo de Excel en una hoja de cálculo específica
- 6. Usando Open XML, ¿cómo insertar una fórmula en una hoja de cálculo de Excel 2010?
- 7. Cómo cambio el nombre de la hoja de C# en una hoja de cálculo de Excel
- 8. PHPExcel modificar archivo .xlsx existente con hoja de cálculo múltiple
- 9. Extrae datos de una hoja de cálculo Excel
- 10. ¿Cómo puedo escribir en una hoja de cálculo de Excel usando Linq?
- 11. ¿Cómo puedo unir documentos de Excel usando PHPExcel?
- 12. Importación de datos de hoja de cálculo de Excel a otra hoja de cálculo de Excel que contiene VBA
- 13. Extraer VBA de una hoja de cálculo de Excel
- 14. Ocultar una hoja de cálculo de Excel con VBA
- 15. C#: ¿Cómo exportar a una hoja de cálculo de Excel? usando XSLT/LINQ/Otros métodos?
- 16. ¿Almacenar objetos en la hoja de cálculo de Excel?
- 17. Abrir hoja de cálculo xml en Excel de forma predeterminada
- 18. Lectura de una hoja XLSX para alimentar una tabla MySQL usando PHPExcel
- 19. ¿Cómo evito que Excel represente la hoja de cálculo como lo calcula mi macro?
- 20. ¿Cómo ocultar una hoja en Excel usando OpenXML C#?
- 21. ruby excel reader, gema de la hoja de cálculo
- 22. Looping a través de hojas de cálculo con PHPExcel
- 23. ¿Cómo leer hojas de cálculo grandes de grandes archivos de Excel (27 MB +) con PHPExcel?
- 24. Fusionando celdas en Excel por filas y columnas usando PHPExcel
- 25. hoja de cálculo Excel xml: ¿es posible incrustar imágenes?
- 26. NullReferenceException al crear la hoja de cálculo de Excel
- 27. C# lea la hoja de cálculo de Excel
- 28. ¿Guardar hoja de cálculo de Excel como .csv con R?
- 29. Guardar hoja de cálculo de Excel con Interop C#
- 30. Copiar hoja de Excel usando Apache POI
Gracias. Si estoy usando esto dentro de un framework como Symfony, podría necesitar pasar el contenido de un servicio Excel a algún tipo de servicio de salida o controlador. Prefiero evitar el golpe de escribir en el disco. – Aaron
Te das cuenta de que podría ser increíblemente hambriento de memoria, sosteniendo todo el archivo en la memoria PHP –
Una buena pregunta. Gracias por el consejo. – Aaron