我对 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 一直循环到当月的天数(IE 为 6 月 30)。然后它将单元格值设置为每一天的点数。
这一切都完美无缺。现在,if
条件将捕获值大于(或等于)5 的单元格。
代码$alphabetArray[($d+7)] . ($recordCount+5)
在迭代中获取当前单元格 ID。我知道这也很好,因为如果我将它回显到屏幕上,第一个输出是T5
大于 5 的单元格。
如果我隐式指定T5
要着色的单元格,它可以正常工作。但是,如果我尝试使用 的值为$cellId
我的条件动态着色所有单元格,则没有一个单元格被着色。
我知道单元格 ID 是 100% 正确的,我知道着色声明是正确的(如果我特别提到它们,它会为单元格着色)。它只是不想动态播放。
有任何想法吗?
谢谢菲尔