2012-03-28 4 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 
    } 
} 

Я ищу аналогичный метод, который называется getCell выше или хорошо написанная документация PHPExcel.Получение ячеек по координатам

Спасибо.

ответ

13

Если у вас есть $row информацию RowIterator на, вы можете просто легко назвать:

$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

Это очень хорошо, но трудно реализовать. Мне нужен только метод, который получает значение ячейки. Потому что у меня есть столбцы от A до R. Это означает, что я должен написать две строки для каждого столбца в строке. – miqbal

+0

Почему бы вам просто не перебрать камеру? – ariefbayu

+0

Потому что мне не нужны колонки. Я могу игнорировать столбцы, но это не эффективно. – miqbal

1

Вместо того, чтобы перебирать все клетки подряд, когда не используйте метод rangeToArray() для строки, а затем используйте метод array_intersect_key(), чтобы отфильтровать только те столбцы, которые вы хотите:

EDIT

Последняя версия кода SVN вводит ряд новых методов й итераторы, в том числе умение работать с диапазонами, или установить указатель на конкретные строки и столбцы

6

Это то, что мне было нужно :

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

реализация:

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

Хотя один также может сделать это для A-Z колонок:

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

Смежные вопросы