2

PHPExcel で非常に紛らわしい問題があります。私には800人の学生がいます。学生が持っている賞賛の量 (当月の毎日) をリストするスプレッドシートが生成されます。

たとえば、次のようになります。

+---------------+-----+-----+-----+-----+
| Student Name  | 1st | 2nd | 3rd | 4th | ...
+---------------+-----+-----+-----+-----+
| Test Student  | 2   | 0   | 3   | 7   |
+---------------+-----+-----+-----+-----+

5より大きい(または等しい)セルの背景色を変更したい.ループを使用して、生徒と日をループします。これは私のコードです:

for($d=1; $d<=$daysInCMonth; $d++)
{
    $phpExcel
        ->getSheetByName('Monthly Leaderboard')
        ->setCellValue($alphabetArray[($d+7)] . ($recordCount+5), $record['monthlyReport'][$MonthlyReportKeys[($d-1)]]);

    if($record['monthlyReport'][$MonthlyReportKeys[($d-1)]]>=5)
    {
        $cellId = $alphabetArray[($d+7)] . ($recordCount+5);
        $phpExcel
            ->getSheetByName('Monthly Leaderboard')
            ->getStyle($cellId)
            ->applyFromArray(
                array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID,'color' => array('rgb' => '000000'))
         ));
    }

}

コードを理解しやすくするために、最初のforループは 1 から現在の月 (6 月の場合は IE 30) の日数までループします。次に、セルの値を特定の日のポイント数として設定します。

これはすべて完璧に機能します。これで、if条件は 5 より大きい (または等しい) 値を持つセルをキャッチします。

コード$alphabetArray[($d+7)] . ($recordCount+5)は、反復で現在のセル ID を取得します。T5画面にエコーすると、最初の出力は5より大きいセルになるため、これもうまく機能することがわかっています。

T5色を付けるセルとして暗黙的に指定すると、正常に機能します。ただし、値を使用し$cellIdて条件のすべてのセルを動的に色付けしようとすると、どのセルも色付けされません。

セル ID が 100% 正しいこと、色付けステートメントが正しいことはわかっています (セルを具体的に参照すると、セルに色が付けられるため)。動的に再生したくないだけです。

何か案は?

ありがとうフィル

4

2 に答える 2