2011-10-20 46 views
3

我們可以應用在這樣使用列和行索引PHP的Excel樣式格式

$objPHPExcel->getActiveSheet()->duplicateStyleArray($array_of_style,"A1:D1"); 

單元格區域的風格,但我想同樣的樣式應用到一系列像他們的行和列的參考單元

(3,4,7,7); 

請幫我解決這個問題。我不是phpexcel上的新手,但找不到任何方法在col &行索引中給出的範圍上應用樣式。

+0

可以編寫轉換一個簡單的包裝功能(3,4,7,7),以使用PHPExcel_Cell :: stringFromColumnIndex()到列索引轉換的相應單元格範圍 –

回答

6
function duplicateStyleArrayByColumnAndRow(PHPExcel $objPHPExcel, 
              $styleArray = array(), 
              $fromRow = 1, 
              $fromCol = 0, 
              $toRow = 1, 
              $toCol = 0 
             ) 
{ 
    if ($fromRow > $toRow) { 
     $r = $fromRow; $fromRow = $toRow; $toRow = $r; 
    } 
    if ($fromCol > $toCol) { 
     $c = $fromCol; $fromCol = $toCol; $toCol = $c; 
    } 

    $fromCell = PHPExcel_Cell::stringFromColumnIndex($fromCol) . $fromRow; 
    $toCell = PHPExcel_Cell::stringFromColumnIndex($toCol) . $toRow; 

    $cellRange = $fromCell . ':' . $toCell; 
    if ($fromCell === $toCell) { 
     $cellRange = $fromCell; 
    } 

    return $objPHPExcel->getActiveSheet()->duplicateStyleArray($styleArray,$cellRange); 
} 
+1

'$ R = $ fromRow; $ fromRow = $ toRow; $ toRow = $ r;''可以更好地寫成'list($ fromRow,$ toRow)= array($ toRow,$ fromRow);'我個人總是喜歡這樣做,以便更好地處理它,發生:'function transpose_vars(&$ a,&$ b){list($ b,$ a)= array($ a,$ b);}' – scragar