2015-09-30 3 views
0

У меня есть файл excel, который содержит определенные строки с цветом. Я хочу получить идентификатор строки определенного цветового кода, но не смог этого сделать .. уже искал, но не нашел ничего ниже. мой код PHPEXCELКак получить идентификатор строки с использованием цветового кода в phpexcel

$cellColor = $objPHPExcel->getActiveSheet()->getStyle($cell->getCoordinate())->getFill()->getStartColor()->getRGB(); 

Это даст мне код цвета и значения я имею $cell->getValue() где $cell некоторая переменная $cellIterator

foreach ($worksheet->getRowIterator() as $row) { 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 

      foreach ($cellIterator as $cell) 
      { 
       $cellColor = $objPHPExcel->getActiveSheet()->getStyle($cell->getCoordinate())->getFill()->getStartColor()->getRGB(); 

      if (!empty($cell->getCalculatedValue())) { 
        if ($cellColor == 'yellow') { 
         echo ($cellColor.'======'.$cell->getValue()); 
        } 
       } 
      } 
    } 

$cell->getValue() даст мне значение этого ра rticular код цвета
Но, проблема в том, если у меня есть 2 строки с желтым цветом, то $cell->getValue() даст два значения, как
0-> yellow1
1-> yellow2
, но после удаления 1-й желтого цвета данных в Excel, то результат будет
0-> yellow2
что неправильно, что Мне нужно
0->''
1-> yellow2
Вот почему мне нужен идентификатор строки для этого конкретного цвета, чтобы я мог идентифицировать строку.

+0

Пробовали ли вы $ клеточно> GetRow() ??? @rocky –

+0

Да, я уже пробовал, что он вернет идентификатор строки, но проблема, с которой я столкнулась, заключается в том, что итерация, чтобы получить код цвета, находится на каждой ячейке. я хочу получить цветовой код, посещая каждую строку, тогда мне нужно создать массив каждого цветового кода – rocky

ответ

0

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

$objPHPExcel = PHPExcel_IOFactory::load('someFile.xls'); 
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { 

    //$worksheetTitle = $worksheet->getTitle(); 
    $highestRow = $worksheet->getHighestRow(); 
    $highestColumn = $worksheet->getHighestColumn(); 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
    //$nrColumns = ord($highestColumn) - 64; 

    $groupCount = array(); 
    $standardSetCount = array(); 
    $standardCount = array(); 
    $learningTargetCount = array(); 

    for ($row = 1; $row <= $highestRow; ++$row) { 
     for ($col = 0; $col < $highestColumnIndex; ++$col) { 
      $cell = $worksheet->getCellByColumnAndRow($col, $row); 
      $colorCode = $objPHPExcel->getActiveSheet()->getStyle($cell->getCoordinate())->getFill()->getStartColor()->getRGB(); 

      /* 
      * Yellow 
      */ 

      if ($colorCode == 'FFFF00') { 
       $val = $cell->getValue(); 
       //$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val); 
       $groupCount[] = $val; // $groupCount[] = $dataType; 
      } 

      /* 
      * gold 
      */ 

      if ($colorCode == 'CC9900') { 
       $val = $cell->getValue(); 
       $standardSetCount[] = $val; 
      } 

      /* 
      * red 
      */ 

      if ($colorCode == 'FF3333') { 
       $val = $cell->getValue(); 
       $standardCount[] = $val; 
      } 

      /* 
      * green 
      */ 

      if ($colorCode == '00CC33') { 
       $val = $cell->getValue(); 
       $learningTargetCount[] = $val; 
      } 
     } 
    } 

    $group = (array_chunk($groupCount, $highestColumnIndex)); 
    $standardSet = (array_chunk($standardSetCount, $highestColumnIndex)); 
    $standard = (array_chunk($standardCount, $highestColumnIndex)); 
    $learningTarget = (array_chunk($learningTargetCount, $highestColumnIndex)); 

    echo '<pre>'; 
    print_r($learningTarget); 
} 
Смежные вопросы