2010-08-11 3 views
21

PHPExcel $ 세포 -> GetColumn이() 반환 'A', 'B', 'C', ... 정수를 얻을 수있는 가장 좋은 방법입니다PHPExcel

(0 , 1, 2, ...)을 셀로부터 제거한다.

이 함수는 존재하지 않습니다.

그렇다면 chr을 ascii로 변환하는 대신 무엇을 할 수 있습니까?

+0

명심가 ... – AlexV

답변

44
$colIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn()); 
+6

OK 내가 반환되는 값은 열 A 1 것을 알, 잘 작동하지만, 은 A 열에 0을 사용합니다. go figure –

+2

PHP Excel 개발을 인수했을 때 상속 받았지만 후속 작업을 변경하면 상속받은 뭔가가 생깁니다 (예 : $ cell = "worksheet-> getCellByColumnAndRow ($ col, $ row) 많은 사람들을위한 호환성 –

+3

다른 길로 갈 필요가있는 사람들을 위해 PHPExcel_Cell :: stringFromColumnIndex도 있습니다. – cgTag

5

반복하는 동안 열 인덱스를 가져올 수 있습니다. GetColumn이()가 열> 26 (등등과) 'AA'를 반환 할 수 있습니다

$xls = PHPExcel_IOFactory::load($fn); 
$xls->setActiveSheetIndex(0); 
$sheet = $xls->getActiveSheet(); 

foreach($sheet->getRowIterator() as $row) 
{ 
    foreach($row->getCellIterator() as $key => $cell) 
    { 
     echo $key; // 0, 1, 2... 
     echo $cell->getCalculatedValue(); // Value here 
    } 
} 
+0

그리고 각 행의 두 번째 셀에 대한 값만 가져 오는 방법은 무엇입니까? –

1
If you want to get decrement cell address using this function, you have to use another function with this function as follows. 

<?php 
echo columnLetter("AB"); 

function columnLetter($c){ 


$letter=""; 
    $c = intval(columnNumber($c)); 
    if ($c<=0) return ''; 

    while($c != 0){ 
     $p = ($c - 1) % 26; 
     $c = intval(($c - $p)/26); 
     $letter = chr(65 + $p) . $letter; 
    } 

    return $letter; 

} 

function columnNumber($col){ 

    $col = str_pad($col,2,'0',STR_PAD_LEFT); 
    $i = ($col{0} == '0') ? 0 : (ord($col{0}) - 64) * 26; 
    $i += ord($col{1}) - 64; 

    return $i-1; 

} 
?> 
관련 문제