Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
    /** @var mixed */
29
    private static $scrutinizerFalse = false;
30
 
31
    public function write(): void
32
    {
33
        $wrapperWritten = self::$scrutinizerFalse;
34
        $sheetCount = $this->spreadsheet->getSheetCount();
35
        for ($i = 0; $i < $sheetCount; ++$i) {
36
            $worksheet = $this->spreadsheet->getSheet($i);
37
            $autofilter = $worksheet->getAutoFilter();
38
            if ($autofilter !== null && !empty($autofilter->getRange())) {
39
                if ($wrapperWritten === false) {
40
                    $this->objWriter->startElement('table:database-ranges');
41
                    $wrapperWritten = true;
42
                }
43
                $this->objWriter->startElement('table:database-range');
44
                $this->objWriter->writeAttribute('table:orientation', 'column');
45
                $this->objWriter->writeAttribute('table:display-filter-buttons', 'true');
46
                $this->objWriter->writeAttribute(
47
                    'table:target-range-address',
48
                    $this->formatRange($worksheet, $autofilter)
49
                );
50
                $this->objWriter->endElement();
51
            }
52
        }
53
 
54
        if ($wrapperWritten === true) {
55
            $this->objWriter->endElement();
56
        }
57
    }
58
 
59
    protected function formatRange(Worksheet $worksheet, Autofilter $autofilter): string
60
    {
61
        $title = $worksheet->getTitle();
62
        $range = $autofilter->getRange();
63
 
64
        return "'{$title}'.{$range}";
65
    }
66
}