Differences Between: [Versions 401 and 402]
1 <?php 2 3 namespace PhpOffice\PhpSpreadsheet\Writer\Xlsx; 4 5 use PhpOffice\PhpSpreadsheet\Cell\Coordinate; 6 use PhpOffice\PhpSpreadsheet\Reader\Xlsx\Namespaces; 7 use PhpOffice\PhpSpreadsheet\Shared\XMLWriter; 8 use PhpOffice\PhpSpreadsheet\Worksheet\Table as WorksheetTable; 9 10 class Table extends WriterPart 11 { 12 /** 13 * Write Table to XML format. 14 * 15 * @param int $tableRef Table ID 16 * 17 * @return string XML Output 18 */ 19 public function writeTable(WorksheetTable $table, $tableRef): string 20 { 21 // Create XML writer 22 $objWriter = null; 23 if ($this->getParentWriter()->getUseDiskCaching()) { 24 $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); 25 } else { 26 $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY); 27 } 28 29 // XML header 30 $objWriter->startDocument('1.0', 'UTF-8', 'yes'); 31 32 // Table 33 $name = 'Table' . $tableRef; 34 $range = $table->getRange(); 35 36 $objWriter->startElement('table'); 37 $objWriter->writeAttribute('xml:space', 'preserve'); 38 $objWriter->writeAttribute('xmlns', Namespaces::MAIN); 39 $objWriter->writeAttribute('id', (string) $tableRef); 40 $objWriter->writeAttribute('name', $name); 41 $objWriter->writeAttribute('displayName', $table->getName() ?: $name); 42 $objWriter->writeAttribute('ref', $range); 43 $objWriter->writeAttribute('headerRowCount', $table->getShowHeaderRow() ? '1' : '0'); 44 $objWriter->writeAttribute('totalsRowCount', $table->getShowTotalsRow() ? '1' : '0'); 45 46 // Table Boundaries 47 [$rangeStart, $rangeEnd] = Coordinate::rangeBoundaries($table->getRange()); 48 49 // Table Auto Filter 50 if ($table->getShowHeaderRow() && $table->getAllowFilter() === true) { 51 $objWriter->startElement('autoFilter'); 52 $objWriter->writeAttribute('ref', $range); 53 $objWriter->endElement(); 54 foreach (range($rangeStart[0], $rangeEnd[0]) as $offset => $columnIndex) { 55 $column = $table->getColumnByOffset($offset); 56 57 if (!$column->getShowFilterButton()) { 58 $objWriter->startElement('filterColumn'); 59 $objWriter->writeAttribute('colId', (string) $offset); 60 $objWriter->writeAttribute('hiddenButton', '1'); 61 $objWriter->endElement(); 62 } else { 63 $column = $table->getAutoFilter()->getColumnByOffset($offset); 64 AutoFilter::writeAutoFilterColumn($objWriter, $column, $offset); 65 } 66 } 67 } 68 69 // Table Columns 70 $objWriter->startElement('tableColumns'); 71 $objWriter->writeAttribute('count', (string) ($rangeEnd[0] - $rangeStart[0] + 1)); 72 foreach (range($rangeStart[0], $rangeEnd[0]) as $offset => $columnIndex) { 73 $worksheet = $table->getWorksheet(); 74 if (!$worksheet) { 75 continue; 76 } 77 78 $column = $table->getColumnByOffset($offset); 79 $cell = $worksheet->getCell([$columnIndex, $rangeStart[1]]); 80 81 $objWriter->startElement('tableColumn'); 82 $objWriter->writeAttribute('id', (string) ($offset + 1)); 83 $objWriter->writeAttribute('name', $table->getShowHeaderRow() ? $cell->getValue() : 'Column' . ($offset + 1)); 84 85 if ($table->getShowTotalsRow()) { 86 if ($column->getTotalsRowLabel()) { 87 $objWriter->writeAttribute('totalsRowLabel', $column->getTotalsRowLabel()); 88 } 89 if ($column->getTotalsRowFunction()) { 90 $objWriter->writeAttribute('totalsRowFunction', $column->getTotalsRowFunction()); 91 } 92 } 93 if ($column->getColumnFormula()) { 94 $objWriter->writeElement('calculatedColumnFormula', $column->getColumnFormula()); 95 } 96 97 $objWriter->endElement(); 98 } 99 $objWriter->endElement(); 100 101 // Table Styles 102 $objWriter->startElement('tableStyleInfo'); 103 $objWriter->writeAttribute('name', $table->getStyle()->getTheme()); 104 $objWriter->writeAttribute('showFirstColumn', $table->getStyle()->getShowFirstColumn() ? '1' : '0'); 105 $objWriter->writeAttribute('showLastColumn', $table->getStyle()->getShowLastColumn() ? '1' : '0'); 106 $objWriter->writeAttribute('showRowStripes', $table->getStyle()->getShowRowStripes() ? '1' : '0'); 107 $objWriter->writeAttribute('showColumnStripes', $table->getStyle()->getShowColumnStripes() ? '1' : '0'); 108 $objWriter->endElement(); 109 110 $objWriter->endElement(); 111 112 // Return 113 return $objWriter->getData(); 114 } 115 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body