phpexcel डाउनलोड करने के लिए


79

हैलो, मैं 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");

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

धन्यवाद

जवाबों:


169

इसे किसी फ़ाइल में सहेजने के बजाय, इसे php://outputडॉक्स में सहेजें :

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

यह इसे AS-IS ब्राउज़र को भेजेगा।

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

// 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');

पहले हेडर करते हैं, फिर सेव। एक्सेल हेडर के लिए निम्न प्रश्न देखें: एक्सेल डॉक्यूमेंट के लिए माइम टाइप सेट करना


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

1
ध्यान रखें कि उस पृष्ठ पर आपके द्वारा उत्पादित एकमात्र चीज़ दो headerपंक्तियों और ->save()कार्रवाई से आउटपुट है । आप एक के बीच तय करने) एक पृष्ठ प्रदर्शित की जरूरत है या ख) एक डाउनलोड प्रदान करते हैं। दोनों एक स्क्रिप्ट के साथ आसानी से काम नहीं करते हैं। हालाँकि आप डाउनलोड के लिए एक स्क्रिप्ट और पेज के लिए एक बना सकते हैं और जब पेज स्क्रिप्ट को एक्सपेक्ट किया गया है, तो डाउनलोड स्क्रिप्ट पर रीडायरेक्ट करें जो ब्राउज़र को सेव-अस डायलॉग की पेशकश करेगा।
हकर्रे

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

Dvir - अपने url में उपयोग और स्वरूप = कच्चा। अपने mvc में, view.raw.php फ़ाइल बनाएँ।
MSD

1
Content-Lengthउपयोग करते समय आप हेडर कैसे सेट कर सकते हैं php://output?
टोनिक्स

22
$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');

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

क्या आपने हेडर भी सेट किया है?
मैटिनो

मैं PHPPowerpoint का उपयोग करते हुए एक PPT बनाने की कोशिश कर रहा हूँ, बिल्कुल उल्लेख किया गया कदम है, लेकिन MIMEटाइप को बदलकर application/vnd.openxmlformats-officedocument.presentationml.presentation, यह मेरे सिस्टम पर फ़ाइल डाउनलोड कर रहा है, लेकिन यह कह रहा है File can't be opened। जब कोड सर्वर पर लिख रहा था तब फ़ाइल काम कर रही थी।
शून्य

मेरे लिए काम कर रहे हैं। साभार
जाम

6

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
PSI .: XLS प्रारूप डिफ़ॉल्ट रूप से 'Excel5' और XLSX 'Excel2007' है।
रोजेरियो डे मोरेस

मैं PHPPowerpoint का उपयोग करते हुए एक PPT बनाने की कोशिश कर रहा हूँ, बिल्कुल उल्लेख किया गया कदम है, लेकिन MIMEटाइप को बदलकर application/vnd.openxmlformats-officedocument.presentationml.presentation, यह मेरे सिस्टम पर फ़ाइल डाउनलोड कर रहा है, लेकिन यह कह रहा है File can't be opened। जब कोड सर्वर पर लिख रहा था तब फ़ाइल काम कर रही थी।
शून्य

Xlsx के लिए सामग्री प्रकार पढ़ना चाहिए: "आवेदन / vnd.openxmlformats-officedocument.spreadsheetml.sheet"। देखें filext.com/faq/office_mime_types.php
kojow7

5

इस कॉल का उपयोग करें

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

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


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

मैं PHPPowerpoint का उपयोग करते हुए एक PPT बनाने की कोशिश कर रहा हूँ, बिल्कुल उल्लेख किया गया कदम है, लेकिन MIMEटाइप को बदलकर application/vnd.openxmlformats-officedocument.presentationml.presentation, यह मेरे सिस्टम पर फ़ाइल डाउनलोड कर रहा है, लेकिन यह कह रहा है File can't be opened। जब कोड सर्वर पर लिख रहा था तब फ़ाइल काम कर रही थी।
शून्य

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');

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

3

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

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


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

2
ob_end_clean()नहींod_end_clean()
turson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.