private function PHPExcel_Writer_Excel2007_Worksheet::_writeAutoFilter in Loft Data Grids 7.2
Same name and namespace in other branches
- 6.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();
}
}