Differences Between: [Versions 400 and 402] [Versions 400 and 403]
1 <?php 2 3 namespace PhpOffice\PhpSpreadsheet\Writer\Ods; 4 5 use PhpOffice\PhpSpreadsheet\Shared\XMLWriter; 6 use PhpOffice\PhpSpreadsheet\Spreadsheet; 7 use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter; 8 use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; 9 10 class AutoFilters 11 { 12 /** 13 * @var XMLWriter 14 */ 15 private $objWriter; 16 17 /** 18 * @var Spreadsheet 19 */ 20 private $spreadsheet; 21 22 public function __construct(XMLWriter $objWriter, Spreadsheet $spreadsheet) 23 { 24 $this->objWriter = $objWriter; 25 $this->spreadsheet = $spreadsheet; 26 } 27 28 public function write(): void 29 { 30 $wrapperWritten = false; 31 $sheetCount = $this->spreadsheet->getSheetCount(); 32 for ($i = 0; $i < $sheetCount; ++$i) { 33 $worksheet = $this->spreadsheet->getSheet($i); 34 $autofilter = $worksheet->getAutoFilter(); 35 if ($autofilter !== null && !empty($autofilter->getRange())) { 36 if ($wrapperWritten === false) { 37 $this->objWriter->startElement('table:database-ranges'); 38 $wrapperWritten = true; 39 } 40 $this->objWriter->startElement('table:database-range'); 41 $this->objWriter->writeAttribute('table:orientation', 'column'); 42 $this->objWriter->writeAttribute('table:display-filter-buttons', 'true'); 43 $this->objWriter->writeAttribute( 44 'table:target-range-address', 45 $this->formatRange($worksheet, $autofilter) 46 ); 47 $this->objWriter->endElement(); 48 } 49 } 50 51 if ($wrapperWritten === true) { 52 $this->objWriter->endElement(); 53 } 54 } 55 56 protected function formatRange(Worksheet $worksheet, Autofilter $autofilter): string 57 { 58 $title = $worksheet->getTitle(); 59 $range = $autofilter->getRange(); 60 61 return "'{$title}'.{$range}"; 62 } 63 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body