PHP

2011-05-24 7 views
6

का उपयोग कर एक्सेल फ़ाइल (xls) के भीतर चित्रों/छवियों को निकालने के लिए मेरे पास एक स्प्रेडशीट है जिसे मैं PHP का उपयोग करके आयात करना चाहता हूं। मैं PHPExcel का उपयोग कर सेल डेटा आयात कर सकता हूं, लेकिन यह पता नहीं लगा सकता कि स्प्रेडशीट के भीतर से छवियों का उपयोग कैसे करें।PHP

क्या ऐसा करने का कोई तरीका है और फिर सर्वर आदि को सहेजने के लिए PHP के भीतर छवियों का उपयोग करना है?

सहायता के लिए बहुत धन्यवाद! :)


अद्यतन:

@ मार्क-बेकर - यदि आपको यह आपकी मदद के लिए बहुत बहुत धन्यवाद!

मैं एक जेपीजी के साथ एक परीक्षण XLS फ़ाइल पर नीचे दिए गए कोड का इस्तेमाल किया है:

$objPHPExcel = PHPExcel_IOFactory::load("SH.xls"); 

foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) { 
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { 
     ob_start(); 
     call_user_func(
      $drawing->getRenderingFunction(), 
      $drawing->getImageResource() 
     ); 
     $imageContents = ob_get_contents(); 
     ob_end_clean(); 
    } 
} 

मैं मैं तो उत्पादन जेपीईजी हेडर और $imageContents की सामग्री छवि दिखाने के लिए कर सकते हैं लगता है।

स्प्रेडशीट में छवि का वास्तविक नाम मुझे कैसे मिलेगा उदाहरण के लिए "चित्र 1"? क्या यह PHPExcel_Worksheet_MemoryDrawing के साथ संभव है?

मैं आपको धन्यवाद नहीं दे सकता!

उत्तर

3

किसी ने, मैं अगर यह अपने आप नहीं जानते कि, PHPExcel बोर्ड पर एक समान प्रश्न पूछा गया है ... कि मैं दौर अभी तक जवाब देने के लिए नहीं मिला है ।

$objPHPExcel->getActiveSheet()->getDrawingCollection() 

सक्रिय कार्यपत्रक में सभी छवि वस्तुओं का एक ArrayObject वापस आ जाएगी।

ये ऑब्जेक्ट्स या तो PHPExcel_Worksheet_Drawing या PHPExcel_Worksheet_Memory ड्रॉइंग ऑब्जेक्ट्स होंगे: आप is_a() का उपयोग कर पहचान सकते हैं। फिर आप फ़ाइल से छवि डेटा (PHPExcel_Worksheet_Drawing ऑब्जेक्ट्स के लिए) या सीधे PHPExcel_Worksheet_Memory से ऑब्जेक्ट ड्रॉइंग करने के लिए उस वर्ग के लिए उपयुक्त विधियों (जैसा कि एपीआई में वर्णित है) का उपयोग कर सकते हैं। GetName() और getDescription() विधियों का उपयोग छवि ऑब्जेक्ट के लिए प्रासंगिक मानों को पुनर्प्राप्त करने के लिए किया जा सकता है।

ध्यान दें कि यह भी प्रिंट हेडर के साथ जुड़े छवि वस्तुओं बनाना संभव है:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages() 

शीर्षलेख/पादलेख से छवियों को पुनः प्राप्त करने के लिए इस्तेमाल किया जा सकता है। यह PHPExcel_Worksheet_HeaderFooter ड्रॉइंग ऑब्जेक्ट्स की एक सरणी है। इन ऑब्जेक्ट्स से छवि फ़ाइल निकालने के लिए सभी PHPExcel_Worksheet_Drawing विधियों का उपयोग किया जा सकता है।

संपादित

संशोधित प्रश्न में अपने कोड के आधार पर:

$drawing->getName(); 

आप देना चाहिए कि तुम क्या जरूरत है

+0

तुम मेरे पास जवाब देने के लिए समय निकालने के लिए बहुत बहुत धन्यवाद - मैं मैं इसकी प्रशंसा करता हूँ! मैंने अपना प्रश्न अपडेट कर लिया है - क्या आप मेरे लिए यह देखने के लिए पर्याप्त होंगे? – SammyBlackBaron

+0

मैंने '$ ड्राइंग-> getName() की कोशिश की; 'लेकिन यह कुछ भी वापस नहीं करता है, बस खाली है। क्या 'getName()' केवल 'PHPExcel_Worksheet_Drawing' ऑब्जेक्ट्स के लिए उपयोग किया जाता है, न कि' PHPExcel_Worksheet_MemoryDrawing' ऑब्जेक्ट्स? – SammyBlackBaron

+0

नाम सेट किया जाना चाहिए यदि आप Excel 2007 फ़ाइल से छवियां पढ़ रहे हैं, लेकिन यदि छवि Excel BIFF फ़ाइल से पढ़ी जाती है तो नाम सेट नहीं किया गया है ... मुझे नहीं पता कि यह भीतर पढ़ने के लिए भी उपलब्ध है या नहीं कल्पना की जांच किए बिना बीआईएफएफ। –

0

आप निम्न कर सकते हैं:

$im = {excel data} <br> 
header("Content-type: image/jpeg"); // or whatever <Br> 
$image = imagejpeg($im, NULL, 100);