2011-12-19 16 views
72

हैलो मैं phpexcel के लिए नया हूँ डाउनलोड करने के लिए, और अगर वहाँ कोई रास्ता भेज एक्सेल मैं ग्राहकों को बनाया है डाउनलोड मेरे सर्वर पर सहेजे बिना या वह इसे डाउनलोड करता है सही होने के बादphpexcel

इसे हटाने के लिए मैं सोच रहा था

मैं एक पृष्ठ पर "निर्यात बटन" बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता को एक्सेल के साथ "पॉप-अप" देगा जो वह चाहता है कि मैंने अभी बनाया है।

मैं मेज मैं करता हूँ बनाने के अब के बाद:

$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true); 
$objXLS->getActiveSheet()->getColumnDimension("B")->setAutoSize(true); 

$objXLS->getActiveSheet()->setTitle('Test Stats'); 

$objXLS->setActiveSheetIndex(0); 

$objWriter = PHPExcel_IOFactory::createWriter($objXLS, 'Excel5'); 
$objWriter->save(__DIR__."/test1.xls"); 

लेकिन है कि मेरे सर्वर पर बचाता है

, इसके बजाय

उत्तर

152

धन्यवाद एक फ़ाइल में बचत की php://output­Docs पर सहेजें:

$objWriter->save('php://output'); 

यह ब्राउज़र में एएस-आईएस भेज देगा।

आप, कुछ headers­Docs पहले जोड़ने के लिए है कि यह फ़ाइल डाउनलोड के साथ आम है चाहते हैं, इसलिए ब्राउज़र जानता है जो प्रकार है कि फ़ाइल है और यह कैसे (फ़ाइल का नाम) नाम दिया जाना चाहिए:

// We'll be outputting an excel file 
header('Content-type: application/vnd.ms-excel'); 

// It will be called file.xls 
header('Content-Disposition: attachment; filename="file.xls"'); 

// Write file to the browser 
$objWriter->save('php://output'); 

पहले हेडर करना , तो बचाओ। एक्सेल हेडर के लिए निम्न प्रश्न भी देखें: Setting mime type for excel document

+1

im एक फाइल हो रही है डाउनलोड करने के लिए लेकिन इसकी नहीं क्या मैं बनाया है और जब मैं बचाने ('php: // उत्पादन') कर $ objWriter-> यह मेरे छेद पेज को खराब करता = \ –

+1

ध्यान रखें कि उस पृष्ठ पर आपके द्वारा उत्पादित एकमात्र चीज दो 'हेडर' लाइनों और '-> सेव()' क्रिया से आउटपुट है। आपको ए के बीच फैसला करने की आवश्यकता है) एक पृष्ठ * या * बी प्रदर्शित करना) डाउनलोड की पेशकश करें। दोनों आसानी से एक स्क्रिप्ट के साथ काम नहीं करते हैं। हालांकि आप डाउनलोड के लिए एक स्क्रिप्ट बना सकते हैं और पेज के लिए एक और जब पेज स्क्रिप्ट का पता लगाया गया है, तो डाउनलोड स्क्रिप्ट पर रीडायरेक्ट करें जिससे ब्राउज़र सहेजने वाले संवाद की पेशकश करेगा। – hakre

+0

मेरी समस्या यह है कि मैं जूमला का उपयोग कर रहा हूं और मुझे इसे खाली पृष्ठ से लोड करने का कोई तरीका नहीं मिल रहा है। हर बार जब मैं कोशिश करता हूं कि मुझे मेनू और सभी के साथ छेद जूमला पृष्ठ मिलता है। क्या आप जानते हैं कि मुझे इस समस्या का उत्तर कहां मिल सकता है? मैं स्पैम ढेर ओवरफ्लो नहीं चाहता ... –

20
$excel = new PHPExcel(); 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="your_name.xls"'); 
header('Cache-Control: max-age=0'); 

// Do your stuff here 

$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5'); 

// This line will force the file to download 
$writer->save('php://output'); 
+0

हैलो और उत्तर के लिए धन्यवाद। मैं लाइन $ लेखक-> सहेजें ('php: // output') डाल दिया; और यह उस फ़ाइल को डाउनलोड नहीं करता है जो पेज पर कचरा प्रिंट करता है। क्या आपको पता है ऐसा क्यों होता है? –

+0

क्या आपने हेडर भी सेट किए हैं? – matino

+0

हां। (मुझे टिप्पणी करने के लिए 15 वर्ण भरना पड़ा) –

5

उपयोग इस कॉल

$objWriter->save('php://output'); 

उत्पादन करने के लिए आप जिस पृष्ठ पर हैं करने के लिए XLS शीट, बस सुनिश्चित करें कि आप जिस पृष्ठ पर हैं कोई अन्य गूंज के, प्रिंट की, आउटपुट है बनाते हैं।

+0

साझा होस्टिंग में काम करते समय, मुझे $ objWriter-> save ('php: // output') का उपयोग करते समय एक त्रुटि (शायद फ़ाइल और फ़ोल्डर अनुमतियों से संबंधित) मिलती है; संदेश के साथ अनचाहे अपवाद 'PHPExcel_Writer_Exception' 'लिखने के लिए php: // आउटपुट नहीं खोल सका।' तृतीय_party/PHPExcel/Writer/Excel2007.php: 241 स्टैक ट्रेस: ​​# 0 – Enrique

+0

मैं PHPPowerpoint का उपयोग करके एक पीपीटी बनाने की कोशिश कर रहा हूं, वास्तव में उल्लिखित चरणों का पालन किया है, लेकिन 'एमआईएमई' प्रकार को 'एप्लिकेशन/vnd.openxmlformats- officedocument' में बदल रहा हूं .presentationml.presentation', यह मेरे सिस्टम पर फ़ाइल डाउनलोड कर रहा है लेकिन कह रहा है कि 'फ़ाइल खोला नहीं जा सकता है'। फ़ाइल तब काम कर रही थी जब कोड सर्वर पर लिख रहा था। – void

4

सकारात्मक है कि आप पहले से ही अपनी समस्या हल कर चुके हैं, किसी भी तरह से मुझे उम्मीद है कि यह आपकी मदद करेगा।

डाउनलोड की गई सभी फाइलें खाली रेखा से शुरू होती हैं, मेरे मामले में जहां चार खाली लाइनें होती हैं, और इससे कोई समस्या होती है। कोई फर्क नहीं पड़ता अगर आप readfile(); या save('php://output'); साथ काम करते हैं, यह स्क्रिप्ट की शुरुआत और od_end_clean(); सिर्फ readfile() से पहले कम से ob_start(); को जोड़ने के साथ तय किया जा सकता है; या save('php://output');

+0

आपके पास समस्या है जो आपकी त्रुटि लॉगिंग और रिपोर्टिंग के साथ है: आपको ऐसी चेतावनियां नहीं दिखाई देती हैं जो आपको समस्या पर इंगित करती हैं: हेडर पहले ही भेजे गए हैं। यह इस संदर्भ प्रश्न में उल्लिखित है: http://stackoverflow.com/q/8028957/367456 – hakre

+1

'ob_end_clean()' not 'od_end_clean()' – turson

5

XLSX उपयोग

विस्तार के साथ XLSX से में $ xlsName नाम सेट के लिए उदाहरण: $ xlsName = 'teste.xlsx';

$objPHPExcel = new PHPExcel(); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.$xlsName.'"'); 
header('Cache-Control: max-age=0'); 
$objWriter->save('php://output'); 

XLS उपयोग के लिए

सेट में विस्तार के साथ XLS से $ xlsName नाम। उदाहरण: $ xlsName = 'teste।xls ';

$objPHPExcel = new PHPExcel(); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.$xlsName.'"'); 
header('Cache-Control: max-age=0'); 
$objWriter->save('php://output'); 
+3

** पीएसआई .: एक्सएलएस प्रारूप डिफ़ॉल्ट रूप से 'एक्सेल 5' और एक्सएलएसएक्स परिभाषित करता है 'एक्सेल 2007'। ** –

+0

मैं PHPPowerpoint का उपयोग करके एक पीपीटी बनाने की कोशिश कर रहा हूं, वास्तव में उल्लिखित चरणों का पालन किया है, लेकिन 'एमआईएमई' प्रकार को 'एप्लिकेशन/vnd.openxmlformats- officedocument.presentationml.presentation' में बदल रहा है, यह फ़ाइल डाउनलोड कर रहा है मेरे सिस्टम पर लेकिन कह रहा है कि 'फाइल खोला नहीं जा सकता'। फ़ाइल तब काम कर रही थी जब कोड सर्वर पर लिख रहा था। – void

+0

xlsx के लिए सामग्री प्रकार को पढ़ना चाहिए: "अनुप्रयोग/vnd।openxmlformats-officedocument.spreadsheetml.sheet "। http://filext.com/faq/office_mime_types.php – kojow7

3
header('Content-type: application/vnd.ms-excel'); 

header('Content-Disposition: attachment; filename="file.xlsx"'); 

header('Cache-Control: max-age=0'); 

header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 

header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); 

header ('Cache-Control: cache, must-revalidate'); 

header ('Pragma: public'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

$objWriter->save('php://output'); 
+0

देखें मैं PHPPowerpoint का उपयोग करके एक पीपीटी बनाने की कोशिश कर रहा हूं, वास्तव में उल्लिखित चरणों का पालन किया है, लेकिन' MIME' प्रकार को 'एप्लिकेशन में बदल रहा हूं/vnd.openxmlformats- officedocument.presentationml.presentation', यह मेरे सिस्टम पर फ़ाइल डाउनलोड कर रहा है लेकिन कह रहा है कि 'फ़ाइल खोला नहीं जा सकता है'। फ़ाइल काम कर रही थी जब कोड सर्वर पर लिख रहा था। – void