xxx

2013-04-09 7 views
9

पर निर्यात करने के लिए PHPExcel का उपयोग करके मैं MYEXQL का उपयोग करके जेनरेट की गई एक HTML तालिका निर्यात करने के लिए PHPEXxcel का उपयोग कर रहा हूं और इसकी तरह।xxx

<?php $query = "SELECT `Firstname`,`Lastname`,`Branch`,`Gender`,`Mobileno`, `Email` 
     FROM `student_details` WHERE Branch IN ('$branch') and `Year`='$year' 
     and Tenthresult > '$tenth' and 
     Twelthresult > '$twelth' and (CGPA > '$cgpa' || CGPA = '$cgpa')"; 

$result = mysql_query($query); 
confirm_query($result); 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->setActiveSheetIndex(0); 

$rowCount = 1; 
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount,'Firstname'); 
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount,'Lastname'); 
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount,'Branch'); 
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount,'Gender'); 
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount,'Mobileno'); 
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount,'Email'); 

while($row = mysql_fetch_array($result)){ 
    $rowCount++; 
    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['0']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['1']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $row['2']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $row['3']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount, $row['4']); 
    $objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount, $row['5']); 
} 

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->save('some_excel_file.xlsx'); 
?> 

इसका काम कर रहा है, लेकिन यह उपयोगकर्ता के लिए किसी भी संकेत है कि अपने डाउनलोड किया जा रहा बिना दिखाए रूट फ़ोल्डर में xlsx फ़ाइल बचाता है। यह कोड रैंड करता है जब मैं एक बटन क्लिक करता हूं। अब, क्या मैं इसे डाउनलोड करने के लिए बना सकता हूं जैसे कि हम एक मेल अटैचमेंट डाउनलोड करते हैं और उपयोगकर्ता को सामने के अंत में दिखाते हैं कि इसे स्थान के साथ डाउनलोड किया जा रहा है।

मैं

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="01simple.xls"'); 
header('Cache-Control: max-age=0'); 
इस के साथ

उपयोग करने की कोशिश, मैं क्या मैं चाहता था, लेकिन इसके बाद के संस्करण हो रही है xls फ़ाइल जब शो संदेश 'फ़ाइल खोलने का प्रयास कर रहे हैं' फ़ाइल नाम 'एक में है खोला डाउनलोड किया निर्दिष्ट एक्सटेंशन से अलग प्रारूप ..... आदि। क्या आप अभी खोलना चाहते हैं?

इसे खोलने पर या तो संपूर्ण HTML पृष्ठ या इसकी बस खाली है ... क्या कोई मेरी मदद कर सकता है ..?

+0

एक नज़र, http://www.sitepoint.com/forums/showthread.php?622074-PHP-export-to-xlsx – Rafee

+0

ध्यान दें कि आप एक HTML पृष्ठ बनाने __not__ हैं .... HTML है वेब पेजों के लिए इस्तेमाल किया गया एक मार्कअप। PHPExcel के साथ, आप या तो BIFF-8 फ़ाइल प्रारूप या OfficeOpenXML प्रारूप का उपयोग कर एक्सेल फ़ाइल बना रहे हैं। –

उत्तर

14

स्प्रेडशीट्स 101

कई अलग अलग स्प्रेडशीट फ़ाइल स्वरूपों रहे हैं, अपने स्वयं के अलग फ़ाइल नाम एक्सटेंशन के साथ प्रत्येक, और कहा कि अलग माइम प्रकार से कोई वेब ब्राउज़र के लिए भेजा जा सकता है। इन्हें PHPExcel दस्तावेज़ में वर्णित किया गया है, और प्रत्येक के पास PHPExcel में अपना अलग लेखक है। आप दो विभिन्न स्वरूपों

mismatching रहे

बीआईएफएफ स्वरूप

  • संस्करणों 95 और 2003 के बीच फाइल माइक्रोसॉफ्ट एक्सेल द्वारा प्रयुक्त

  • विस्तार: xls

  • PHPEXcel लेखक: पी HPExcel_Writer_Excel5

  • माइम प्रकार: आवेदन/vnd.ms-एक्सेल

OfficeOpenXML स्वरूप

  • के बाद से संस्करण 2007

  • फ़ाइल माइक्रोसॉफ्ट एक्सेल द्वारा प्रयुक्त विस्तार: xlsx

  • PHPEXcel लेखक: PHPExcel_Writer_Excel2007

  • माइम प्रकार: आवेदन/vnd.openxmlformats-officedocument.spreadsheetml।चादर

आपस में न मिलाएं और मैच: यदि आप करते हैं, तो एक्सेल (और उचित) में शिकायत करेंगे। यदि आप बीआईएफएफ फ़ाइल चाहते हैं, तो PHPExcel के बीआईएफएफ राइटर (एक्सेल 5), .xls का एक फ़ाइल एक्सटेंशन, और बीआईएफएफ प्रारूप के लिए ऊपर सूचीबद्ध माइम प्रकार का उपयोग करें। यदि आप OfficeOpenXML फ़ाइल चाहते हैं, तो PHPExcel के Excel2007 राइटर, .xlsx का फ़ाइल एक्सटेंशन, और OfficeOpenXML के लिए ऊपर सूचीबद्ध माइम प्रकार का उपयोग करें।

संपादित

ध्यान दें कि PHPExcel वितरण के साथ प्रदान उदाहरण 01simple-डाउनलोड-xls.php और 01simple-डाउनलोड-xlsx.php प्रदर्शित करने के लिए वास्तव में आप क्या चाहते हैं शामिल

+0

क्या मैं पूछ सकता हूं कि जो भी वास्तव में इसके लिए स्पष्टीकरण प्रदान करता है? जहां तक ​​मुझे पता है, मेरे उत्तर में जो कुछ भी मैंने बताया है वह वास्तव में सही है, और सीधे PHPExcel पैकेज में प्रदान किए गए उदाहरणों के संदर्भ में ओपी के प्रश्न का उत्तर देता है (फ़ाइल नाम के रूप में php: // output का उपयोग दिखा रहा है ब्राउज़र में डेटा भेजने के लिए उपयोग करने के लिए)। –

+0

आप सही हैं लेकिन जब मैं फ़ाइल खोलता हूं तो xlsx का उपयोग करके मुझे चेतावनी मिल रही है कि मैंने ऊपर वर्णित किया है और जब हाँ दिया गया है तो यह कुछ असामान्य डेटा दिखाता है ... इसके लिए क्या करना है? – Ankur

+0

कृपया अधिक विस्तृत जानकारी दें: 'असामान्य डेटा' की व्याख्या करें –

6

बस उन शीर्षलेख जोड़कर, केवल उन शीर्षकों को भेजता है। आपका शेष कोड अभी भी वही है, इसलिए आप अपने xls को अपने रूट फ़ोल्डर में सहेज रहे हैं जैसे आप करते थे।

शीर्षलेख भेजना केवल वह पृष्ठ बनाता है जिसे आप आमतौर पर एक्सएलएस हेडर के साथ भेजते हैं। कुछ जो आप नहीं चाहते हैं, और आपको अपना HTML पृष्ठ मिल रहा है लेकिन गलत शीर्षलेखों के साथ।

आपको जो करना है वह हैडर भेजें और फिर xlsx स्ट्रीम करें।

एक यादृच्छिक धागा (मैं जानता हूँ कि, बुरा विचार है, लेकिन यह आप क्या करना है पर एक headstart मिल जाएगा) here को देखते हुए, आप इस तरह के उदाहरण भी ढूंढ सकते हैं: इस कोशिश

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 
header("Content-Disposition: attachment;filename=$filename.xls"); 
header("Content-Transfer-Encoding: binary "); 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->setOffice2003Compatibility(true); 
$objWriter->save('php://output'); 
0

..

header('Content-Type: application/vnd.ms-excel'); 
    $filename = "Reports".date("d-m-Y-His").".xls"; 
    header('Content-Disposition: attachment;filename='.$filename .' '); 
    header('Cache-Control: max-age=0'); 
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
    $objWriter->save('php://output'); 
+0

का समर्थन करता है क्या आप समझा सकते हैं कि आपका कोड क्या करता है? – Luca

संबंधित मुद्दे