2013-07-30 6 views
12

से बस एक पंक्ति प्राप्त करें I PHPExcel का उपयोग करके केवल एक पंक्ति प्राप्त करने का तरीका खोजने का प्रयास किया। इंटरनेट पर कई खोजों के बाद, मुझे वैकल्पिक प्रारंभ पंक्ति के साथ, केवल उन पर फिर से प्रयास करने का एक तरीका मिला। यह निम्न समाधान का कारण बनता है:PHPExcel

foreach ($this->objPHPExcel->getActiveSheet()->getRowIterator($rownumber) as $row) { 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 

    foreach ($cellIterator as $cell) { 
     echo $cell->getValue(); 
    } 

    break; 
} 

लेकिन यह थोड़ा बदसूरत लगता है। क्या ऐसा करने का कोई और तरीका है?

उत्तर

19

हाँ!

$row = $this->objPHPExcel->getActiveSheet()->getRowIterator($rownumber)->current(); 

$cellIterator = $row->getCellIterator(); 
$cellIterator->setIterateOnlyExistingCells(false); 

foreach ($cellIterator as $cell) { 
    echo $cell->getValue(); 
} 

मुझे याद नहीं आप next या current का उपयोग करने वाले हैं यदि। यदि आपको गलत पंक्ति मिल रही है, तो next() के बजाय current() का उपयोग करें।

+0

धन्यवाद, मैंने सोचा कि यह उस दिशा में होगा की एक सरणी के रूप में निर्दिष्ट पंक्ति वापस आ जाएगी, बस कभी नहीं 'foreach' में चक्र के लिए इस्तेमाल किया तरीकों के बारे में पता था। –

+0

PHPExcel की पंक्ति और सेल इटरेटर दोनों मानक PHP [Iterator] (http://www.php.net/manual/en/class.iterator.php) इंटरफेस को लागू करते हैं; तो सभी मानक इटरेटर विधियों - वर्तमान(), कुंजी(), अगला(), रिवाइंड() और मान्य() - उपलब्ध हैं। इसके अतिरिक्त, वे तलाश(), prev() और resetStart() विधियों को भी कार्यान्वित करते हैं, बाद में उपयोगी होता है यदि आपने पहली पंक्ति या कॉलम –

+2

के अलावा किसी पंक्ति या कॉलम मान के साथ इटरेटर को तुरंत चालू किया है, तो मैंने 'current()' का उपयोग किया था। महान काम करता है, धन्यवाद। –

10
$myRow = 123; 

$this->objPHPExcel->getActiveSheet() 
    ->rangeToArray(
     'A' . $myRow . 
     ':' . 
     $this->objPHPExcel->getActiveSheet()->getHighestColumn() . $myRow 
    ); 

कोशिकाओं