nfTlWNl rn Ѻq$³*4A8t+SjįX|zv8GrJsf]ZV hFotgūj%0eGⓙ}]w&]TMoP/tH4O$ 4Zng|L_v xV8Uq9R䕊!NM`3^Qh n\`Lٔ*ܝIcz9Q˶)5ȋ<,_Ngx3N-/S͓nl%i&dogקl)c—d#>j ߠ.NeO&jiA(Nhy$pܴJ ̻:d5]!LLf"῏D $@O [#ݓE\)P۲),8qw7E$Weu4Dl%f({ƶAM%XUr݃f-zB4DZ`QɎ ?V |NNTN_mCVNx'vA`4r$9,5o 1*g6N y٤NgV52-x>j~f"g’@aSښ^dJ$vVcg:e,PeAoQW?B e\#-[ rX ] DNLSNP̈́#8#t3mvpw:ĩtb@|>g-E7OS۔Zzi#J7Aeܔʈ2]0)'t dO~Nǥ)(NLݮ}%̋}‰u-yi5b~k<昇3jg:~K cOUÈ 3V|؏ܼ3 oCm?&"-EX<#=>@dЙ$5b9& iDdcN5^ xJviz iRHzJ9T@0>jVxSs$EYNg8D:ʂ9Ѿy9YP(zCEC6Mo!X)çfvd`GNu1H^V(͓1+͍ ,;[gn(/= \=pUcczn7" >  ĢQ$3 Ø~? ʴhSBI[PwV1@$ BJ|ҮNa ĢQ$33 㝳s^, P=̯"9{Z$i\}ʷ%geAV@JoLhOʹUF*PӇdz^Z;h1 EJu;K.\5<*@!v {M^wlGKOfjVtQsrP]EP.`>*|Ӈdz^Z;h1 "E&zl) .b*nxnP<措'[&m ZN]6.S_ՐleԮ-ց3)k^ӵL>Dz3K"z%_EoGMFýgJ_)=iV3}4&ɖ:]?-ԃ| L_YJ;}(}B%,Q?=9 pv-])H1hbLtEj[ԞLGv=ӪQC(3͈LAxX~ޕ[M2*؍ ,0*.~<( ?Rp*%kad4B/E Aoܩs:hM}NҐ f ZٺضrB.gM^||fWIc+|1i? +5FDj1p&'2Q9h;,֬n6N׍g55/f7qMS!VM)(j֩yftcpY<(/@_2M[I2fm&o!X)ç6<{.vto'NueNaگ2V Q!s(ޤ$-k &}q0 g֏YO_\H_žy&lA,]2, zpH(dCJǻR,ЭrG$8)i377 I&xMwm;#[[|Ncpwč\iSAfǭ# Yqu7=XS qη ؓڗL=ƆD;cVrH@*d=${T@C'Թؑo_W,v#Xlԃ^C®凒 婾B!)$38GKY4I1G˖savX Ymw`v+Ҝ+l /F2bɃ\ʈŹP`3|&ЉP9mr+YP`V1J GW"+ R7vRc)v%Т#5t|iggN[Bj1)Z_6&a)`&ޙʇ/:text-properties'); $font = $style->getFont(); if ($font->getBold()) { $this->writer->writeAttribute('fo:font-weight', 'bold'); $this->writer->writeAttribute('style:font-weight-complex', 'bold'); $this->writer->writeAttribute('style:font-weight-asian', 'bold'); } if ($font->getItalic()) { $this->writer->writeAttribute('fo:font-style', 'italic'); } $this->writer->writeAttribute('fo:color', sprintf('#%s', $font->getColor()->getRGB())); if ($family = $font->getName()) { $this->writer->writeAttribute('fo:font-family', $family); } if ($size = $font->getSize()) { $this->writer->writeAttribute('fo:font-size', sprintf('%.1Fpt', $size)); } if ($font->getUnderline() && $font->getUnderline() !== Font::UNDERLINE_NONE) { $this->writer->writeAttribute('style:text-underline-style', 'solid'); $this->writer->writeAttribute('style:text-underline-width', 'auto'); $this->writer->writeAttribute('style:text-underline-color', 'font-color'); $underline = $this->mapUnderlineStyle($font); $this->writer->writeAttribute('style:text-underline-type', $underline); } $this->writer->endElement(); // Close style:text-properties } protected function writeColumnProperties(ColumnDimension $columnDimension): void { $this->writer->startElement('style:table-column-properties'); $this->writer->writeAttribute( 'style:column-width', round($columnDimension->getWidth(Dimension::UOM_CENTIMETERS), 3) . 'cm' ); $this->writer->writeAttribute('fo:break-before', 'auto'); // End $this->writer->endElement(); // Close style:table-column-properties } public function writeColumnStyles(ColumnDimension $columnDimension, int $sheetId): void { $this->writer->startElement('style:style'); $this->writer->writeAttribute('style:family', 'table-column'); $this->writer->writeAttribute( 'style:name', sprintf('%s_%d_%d', self::COLUMN_STYLE_PREFIX, $sheetId, $columnDimension->getColumnNumeric()) ); $this->writeColumnProperties($columnDimension); // End $this->writer->endElement(); // Close style:style } protected function writeRowProperties(RowDimension $rowDimension): void { $this->writer->startElement('style:table-row-properties'); $this->writer->writeAttribute( 'style:row-height', round($rowDimension->getRowHeight(Dimension::UOM_CENTIMETERS), 3) . 'cm' ); $this->writer->writeAttribute('style:use-optimal-row-height', 'false'); $this->writer->writeAttribute('fo:break-before', 'auto'); // End $this->writer->endElement(); // Close style:table-row-properties } public function writeRowStyles(RowDimension $rowDimension, int $sheetId): void { $this->writer->startElement('style:style'); $this->writer->writeAttribute('style:family', 'table-row'); $this->writer->writeAttribute( 'style:name', sprintf('%s_%d_%d', self::ROW_STYLE_PREFIX, $sheetId, $rowDimension->getRowIndex()) ); $this->writeRowProperties($rowDimension); // End $this->writer->endElement(); // Close style:style } public function writeTableStyle(Worksheet $worksheet, int $sheetId): void { $this->writer->startElement('style:style'); $this->writer->writeAttribute('style:family', 'table'); $this->writer->writeAttribute( 'style:name', sprintf('%s%d', self::TABLE_STYLE_PREFIX, $sheetId) ); $this->writer->startElement('style:table-properties'); $this->writer->writeAttribute( 'table:display', $worksheet->getSheetState() === Worksheet::SHEETSTATE_VISIBLE ? 'true' : 'false' ); $this->writer->endElement(); // Close style:table-properties $this->writer->endElement(); // Close style:style } public function write(CellStyle $style): void { $this->writer->startElement('style:style'); $this->writer->writeAttribute('style:name', self::CELL_STYLE_PREFIX . $style->getIndex()); $this->writer->writeAttribute('style:family', 'table-cell'); $this->writer->writeAttribute('style:parent-style-name', 'Default'); // Alignment, fill colour, etc $this->writeCellProperties($style); // style:text-properties $this->writeTextProperties($style); // End $this->writer->endElement(); // Close style:style } }