kartik\export\ExportMenu::generateGroupedRow PHP 메소드

generateGroupedRow() 보호된 메소드

Generate a grouped row
protected generateGroupedRow ( array $groupFooter, integer $groupedCol )
$groupFooter array footer row
$groupedCol integer the zero-based index of grouped column
    protected function generateGroupedRow($groupFooter, $groupedCol)
    {
        $endGroupedCol = 0;
        $this->_groupedRow = [];
        $fLine = ArrayHelper::getValue($this->_groupedColumn[$groupedCol], 'firstLine', -1);
        $fLine = $fLine == $this->_beginRow ? $this->_beginRow + 1 : $fLine + 3;
        $firstLine = $this->_endRow == $this->_beginRow + 3 && $fLine == 2 ? $this->_beginRow + 3 : $fLine;
        $endLine = $this->_endRow + 1;
        list($endLine, $firstLine) = $endLine > $firstLine ? [$endLine, $firstLine] : [$firstLine, $endLine];
        foreach ($this->getVisibleColumns() as $key => $column) {
            $value = isset($groupFooter[$key]) ? $groupFooter[$key] : '';
            $endGroupedCol++;
            $groupedRange = self::columnName($key + 1) . $firstLine . ":" . self::columnName($key + 1) . $endLine;
            //$lastCell = self::columnName($key + 1) . $endLine - 1;
            if (isset($column->group) && $column->group) {
                $this->_objPHPExcelSheet->mergeCells($groupedRange);
            }
            switch ($value) {
                case self::F_SUM:
                    $value = "=sum({$groupedRange})";
                    break;
                case self::F_COUNT:
                    $value = '=countif(' . $groupedRange . ',"*")';
                    break;
                case self::F_AVG:
                    $value = "=AVERAGE({$groupedRange})";
                    break;
                case self::F_MAX:
                    $value = "=max({$groupedRange})";
                    break;
                case self::F_MIN:
                    $value = "=min({$groupedRange})";
                    break;
            }
            if ($value instanceof \Closure) {
                $value = call_user_func($value, $groupedRange, $this);
            }
            $this->_groupedRow[] = empty($value) ? '' : strip_tags($value);
        }
    }