public function render()
 {
     $this->validate();
     $xlsxTableHelper = new XlsxTableHelper($this->datasource, $this->template);
     $this->tableString = $xlsxTableHelper->renderTable();
     $xlsxSheetHelper = new XlsxSheetHelper($this->datasource, $this->template);
     $this->sheetString = $xlsxSheetHelper->renderSheet();
     $xlsxSharedStringsHelper = new XlsxSharedStringsHelper($this->datasource, $this->template);
     $this->sharedStringsString = $xlsxSharedStringsHelper->renderSharedStrings();
     $xlsxStyleHelper = new XlsxStyleHelper($this->datasource, $this->template);
     $this->styleString = $xlsxStyleHelper->renderStyle();
     $this->output();
 }
 protected function doWriteSheetDataHeader()
 {
     $this->currentRow++;
     $this->sheetString .= "<row r=\"{$this->currentRow}\" spans=\"1:1\" x14ac:dyDescent=\"0.25\">";
     foreach ($this->template->getFields() as $key => $fieldDescription) {
         $stringId = XlsxSharedStringsHelper::putIfNotExists($fieldDescription->getFieldCaption());
         $colLetter = $this->getColumnLetters($key);
         $this->sheetString .= "<c r=\"{$colLetter}{$this->currentRow}\" t=\"s\"><v>{$stringId}</v></c>";
     }
     $this->sheetString .= "</row>";
 }
 public function format($value)
 {
     $value = XlsxSharedStringsHelper::putIfNotExists(parent::format($value));
     return empty($value) ? null : "<c r=\"cellAddress\" t=\"s\"><v>{$value}</v></c>";
 }