2012-02-27 20 views

cevap

42

Diske kaydetmek veya php: // çıkışına kaydetmek için bir yazıcı kullanabilirsiniz. İkincisi, bu çıktıyı yakalamak ve daha sonra bir değişkende saklamak için çıktı arabelleği kullanabilirsiniz .... emin değilim neden bunu yapmak istiyorsanız.

stdout yakalamak eğer PHPExcel, her durumda diske dosyayı yazar yana
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
ob_start(); 
$objWriter->save('php://output'); 
$excelOutput = ob_get_clean(); 
+3

teşekkür ederiz. Eğer bunu symfony gibi bir çerçevede kullanırsam, içeriği bir excel servisinden bir çeşit çıktı hizmeti veya kontrolörüne iletmem gerekebilir. Yazma vuruşunu diske atmayı tercih ederim. – Aaron

+5

İnanılmaz derecede bellek açabilir, tüm dosyayı PHP bellekte tutuyor olabilirsiniz. –

+0

Adil bir soru. Tavsiye için teşekkürler. – Aaron

0

ne içten eylem dosya bekletilmektedir, diskten okumak, sonra diske yazılır (ve silinmiş) olmasıdır ve daha sonra çıktı tamponunda yakalanır.

Sen de yapabilir:

$tmpfile = tempnam($tmp_dir, 'phpxltmp'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save($tmpfile); 

$excelOutput = file_get_contents($tmpfile); 
unlink($tmpfile); 
+2

Bu, bir kişinin buna nasıl yaklaşabileceğine dair sağduyu bir durumdur, Fakat bu yönteme yönelik birçok dezavantaj vardır .. Daha fazla işlem/zaman/alan gerektiren diski oluşturma/kullanma. Bu komut dosyası birden çok örnekte veya üst üste binerse, örnek başına farklı bir dosya oluşturmanız gerekir. Bu yolsuzluk/acess sorunlarına yol açabilir. OP, bir değişkene doğrudan bir değişkene değil, bir dosyaya doğrudan demişti. – Mayhem

+0

Yanıt, bu dezavantajları zaten ele alıyor. "tempnam", örnek başına farklı bir dosya oluşturur ve PHPExcel her durumda bir dosya kullandığı için, görünüşte "düzden değişkene" yaklaşımı, bu ikisinin daha az verimli olmasıdır. Birçok durumda, "readfile" işlevini ya da akış işlemlerini yan yana bellek sorunlarıyla kullanmak ve performansları daha da artırmak mümkün olacaktır. Kabul edilen cevap daha basit görünmekle birlikte, ki bu da kendi içinde değerlidir, hala * bunun * kabul edilen cevap veya güvenilir bir alternatif olması gerektiğini düşünüyorum. – LSerni

İlgili konular