2012-03-28 10 views
5
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { 

    foreach ($worksheet->getRowIterator() as $row) { 
     $cellIterator = $row->getCellIterator(); 
     $cellIterator->setIterateOnlyExistingCells(false); 
      // I wish 
      echo $cellIterator->getCell("A3"); // row: $row, cell: A3 
    } 
} 

मैं एक ऐसी ही तरीका है जिसके ऊपर या अच्छी तरह से writed PHPExcel प्रलेखन getCell नामित की तलाश में हूँ।हो रही कोशिकाओं द्वारा समन्वय

धन्यवाद।

उत्तर

13

आप RowIterator से $row जानकारी है, तो आप सिर्फ आसानी से कॉल कर सकते हैं:

$rowIndex = $row->getRowIndex(); 
$cell = $sheet->getCell('A' . $rowIndex); 
echo $cell->getCalculatedValue(); 

पूरा कोड होगा: जब

foreach($worksheet->getRowIterator() as $row){ 
    $rowIndex = $row->getRowIndex(); 

    $cell = $worksheet->getCell('A' . $rowIndex); 
    echo $cell->getCalculatedValue(); 
    $cell = $worksheet->getCell('B' . $rowIndex); 
    echo $cell->getCalculatedValue(); 
} 
+0

यह बहुत अच्छा है, लेकिन लागू करने के लिए मुश्किल है। मुझे केवल एक विधि की आवश्यकता है जो कोशिकाओं के मूल्य को प्राप्त करे। क्योंकि मेरे पास स्तंभ ए से आर हैं। इसका मतलब है कि मुझे लगातार प्रत्येक कॉलम के लिए दो पंक्तियां लिखनी होंगी। – miqbal

+0

आप सेल को फिर से क्यों नहीं करते? – ariefbayu

+0

क्योंकि मुझे कुछ कॉलम की आवश्यकता नहीं है। मैं कॉलम को अनदेखा कर सकता हूं लेकिन यह कुशल नहीं है। – miqbal

1

बजाय पुनरावृति सभी कोशिकाओं को एक पंक्ति में, पंक्ति के लिए rangeToArray() विधि का उपयोग न करें, और उसके बाद केवल इच्छित कॉलम फ़िल्टर करने के लिए array_intersect_key() विधि का उपयोग करें:

$worksheet = $objPHPExcel->getActiveSheet(); 
$highestColumn = $worksheet->getHighestColumn(); 

$columns = array_flip(array('A','C','E')); 
foreach($worksheet->getRowIterator() as $row) 
{ 
    $range = 'A'.$row->getRowIndex().':'.$highestColumn.$row->getRowIndex(); 
    $rowData = $worksheet->rangeToArray($range, 
             NULL, 
             TRUE, 
             TRUE, 
             TRUE); 
    $rowData = array_intersect_key($rowData[$row->getRowIndex()],$columns); 
    // do what you want with the row data 
} 

संपादित

नवीनतम SVN कोड iterators th करने के लिए नए तरीकों की एक संख्या विशिष्ट पंक्तियों और स्तंभों

6

यह करने के लिए सीमाओं के साथ काम करते हैं, या स्थापित करने के लिए सूचक की क्षमता सहित, का परिचय है कि मैं क्या जरूरत है :

function coordinates($x,$y){ 
return PHPExcel_Cell::stringFromColumnIndex($x).$y; 
} 

कार्यान्वयन:

coordinates(5,7); //returns "E7" 

हालांकि एक भी एक-जेड स्तंभों के लिए ऐसा कर सकता है:

function toNumber($dest) 
{ 
    if ($dest) 
     return ord(strtolower($dest)) - 96; 
    else 
     return 0; 
} 

function lCoordinates($x,$y){ 
$x = $toNumber($x); 
return PHPExcel_Cell::stringFromColumnIndex($x).$y; 
} 

कार्यान्वयन:

lCoordinates('E',7); //returns "E7" 
+0

http://stackoverflow.com/a/3580935/1815624 – CrandellWS

+0

से अतिरिक्त फ़ंक्शन जोड़ें जो मैं चाहता था वह सेल से वास्तविक मूल्य था और आप उत्तर को देख सकते हैं [यहां] (http://stackoverflow.com/a/ 22566639/1815624) – CrandellWS

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