You are here

private function PHPExcel_Writer_Excel2007_Worksheet::_writeAutoFilter in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/Worksheet.php \PHPExcel_Writer_Excel2007_Worksheet::_writeAutoFilter()

* Write AutoFilter * *

Parameters

PHPExcel_Shared_XMLWriter $objWriter XML Writer: * @param PHPExcel_Worksheet $pSheet Worksheet * @throws PHPExcel_Writer_Exception

1 call to PHPExcel_Writer_Excel2007_Worksheet::_writeAutoFilter()
PHPExcel_Writer_Excel2007_Worksheet::writeWorksheet in vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/Worksheet.php
* Write worksheet to XML format * *

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/Worksheet.php, line 749

Class

PHPExcel_Writer_Excel2007_Worksheet
PHPExcel_Writer_Excel2007_Worksheet

Code

private function _writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) {
  $autoFilterRange = $pSheet
    ->getAutoFilter()
    ->getRange();
  if (!empty($autoFilterRange)) {

    // autoFilter
    $objWriter
      ->startElement('autoFilter');

    // Strip any worksheet reference from the filter coordinates
    $range = PHPExcel_Cell::splitRange($autoFilterRange);
    $range = $range[0];

    //	Strip any worksheet ref
    if (strpos($range[0], '!') !== false) {
      list($ws, $range[0]) = explode('!', $range[0]);
    }
    $range = implode(':', $range);
    $objWriter
      ->writeAttribute('ref', str_replace('$', '', $range));
    $columns = $pSheet
      ->getAutoFilter()
      ->getColumns();
    if (count($columns > 0)) {
      foreach ($columns as $columnID => $column) {
        $rules = $column
          ->getRules();
        if (count($rules > 0)) {
          $objWriter
            ->startElement('filterColumn');
          $objWriter
            ->writeAttribute('colId', $pSheet
            ->getAutoFilter()
            ->getColumnOffset($columnID));
          $objWriter
            ->startElement($column
            ->getFilterType());
          if ($column
            ->getJoin() == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) {
            $objWriter
              ->writeAttribute('and', 1);
          }
          foreach ($rules as $rule) {
            if ($column
              ->getFilterType() === PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER && $rule
              ->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL && $rule
              ->getValue() === '') {

              //	Filter rule for Blanks
              $objWriter
                ->writeAttribute('blank', 1);
            }
            elseif ($rule
              ->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) {

              //	Dynamic Filter Rule
              $objWriter
                ->writeAttribute('type', $rule
                ->getGrouping());
              $val = $column
                ->getAttribute('val');
              if ($val !== NULL) {
                $objWriter
                  ->writeAttribute('val', $val);
              }
              $maxVal = $column
                ->getAttribute('maxVal');
              if ($maxVal !== NULL) {
                $objWriter
                  ->writeAttribute('maxVal', $maxVal);
              }
            }
            elseif ($rule
              ->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER) {

              //	Top 10 Filter Rule
              $objWriter
                ->writeAttribute('val', $rule
                ->getValue());
              $objWriter
                ->writeAttribute('percent', $rule
                ->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT ? '1' : '0');
              $objWriter
                ->writeAttribute('top', $rule
                ->getGrouping() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP ? '1' : '0');
            }
            else {

              //	Filter, DateGroupItem or CustomFilter
              $objWriter
                ->startElement($rule
                ->getRuleType());
              if ($rule
                ->getOperator() !== PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) {
                $objWriter
                  ->writeAttribute('operator', $rule
                  ->getOperator());
              }
              if ($rule
                ->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP) {

                // Date Group filters
                foreach ($rule
                  ->getValue() as $key => $value) {
                  if ($value > '') {
                    $objWriter
                      ->writeAttribute($key, $value);
                  }
                }
                $objWriter
                  ->writeAttribute('dateTimeGrouping', $rule
                  ->getGrouping());
              }
              else {
                $objWriter
                  ->writeAttribute('val', $rule
                  ->getValue());
              }
              $objWriter
                ->endElement();
            }
          }
          $objWriter
            ->endElement();
          $objWriter
            ->endElement();
        }
      }
    }
    $objWriter
      ->endElement();
  }
}