From c1434378bc01c826d3109e1de293bd062a2c0319 Mon Sep 17 00:00:00 2001 From: Sergey Shuchkin Date: Wed, 14 Dec 2022 21:30:23 +0600 Subject: [PATCH] 1.3.10 --- CHANGELOG.md | 8 + README.md | 25 +- datatypes.png | Bin 45801 -> 14855 bytes src/SimpleXLSXGen.php | 787 +++++++++++++++++++++++++++--------------- styles.png | Bin 40909 -> 53137 bytes 5 files changed, 525 insertions(+), 295 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c35763d..6b4f9a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ # Changelog + +## 1.3.10 (2022-12-14) +* added borders `````` see colored [examples](https://github.com/shuchkin/simplexlsxgen#formatting) +* added formulas ```SUM(B1:B10)``` see [examples](https://github.com/shuchkin/simplexlsxgen#data-types) +* added internal links ```Go to page 2``` +* added custom number formats `````` +* added 3 currencies ```$data = [ ['$100.23', '2000.00 €', '1200.30 ₽'] ];``` + ## 1.2.16 (2022-08-12) * added `autoFilter( $range )` ```php diff --git a/README.md b/README.md index 3a05894..3deb84c 100644 --- a/README.md +++ b/README.md @@ -39,16 +39,22 @@ $data = [ ['Integer', 123], ['Float', 12.35], ['Percent', '12%'], + ['Currency $', '$500.67'], + ['Currency €', '200 €'], + ['Currency ₽', '1200.30 ₽'], + ['Currency (other)', ''], ['Datetime', '2020-05-20 02:38:00'], - ['Date','2020-05-20'], - ['Time','02:38:00'], + ['Date', '2020-05-20'], + ['Time', '02:38:00'], ['Datetime PHP', new DateTime('2021-02-06 21:07:00')], ['String', 'Long UTF-8 String in autoresized column'], + ['Formula', 'SUM(B1:B2)'], ['Hyperlink', 'https://github.com/shuchkin/simplexlsxgen'], ['Hyperlink + Anchor', 'SimpleXLSXGen'], - ['RAW string', "\0".'2020-10-04 16:02:00'] + ['Internal link', 'Go to second page'], + ['RAW string', "\0" . '2020-10-04 16:02:00'] ]; -Shuchkin\SimpleXLSXGen::fromArray( $data )->saveAs('datatypes.xlsx'); +SimpleXLSXGen::fromArray($data)->saveAs('datatypes.xlsx'); ``` ![XLSX screenshot](datatypes.png) @@ -66,6 +72,9 @@ $data = [ ['Green', ''], ['Bold Red Text', ''], ['Blue Text and Yellow Fill', ''], + ['Border color', ''], + ['Border style',''], + ['Border sides', ''], ['Left', '12345.67'], ['Center', '
12345.67
'], ['Right', 'Right Text'], @@ -77,10 +86,10 @@ $data = [ ['
MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS MERGE CELLS
', null], ['Word wrap', "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book"] ]; -SimpleXLSXGen::fromArray( $data ) - ->setDefaultFont( 'Courier New' ) - ->setDefaultFontSize( 14 ) - ->setColWidth(1, 35) // 1 - num column, 35 - size in chars +SimpleXLSXGen::fromArray($data) + ->setDefaultFont('Courier New') + ->setDefaultFontSize(14) + ->setColWidth(1, 35) ->mergeCells('A20:B20') ->saveAs('styles_and_tags.xlsx'); ``` diff --git a/datatypes.png b/datatypes.png index 9dc3dbaf8aee165e2ab5528a73a19b9792815e9d..9b0c822c21aa63ef6248aa33f4a4d35ab0a960aa 100644 GIT binary patch literal 14855 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 = -1; $this->defaultFont = 'Calibri'; - $this->sheets = [ ['name' => 'Sheet1', 'rows' => [], 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '' ] ]; - $this->SI = []; // sharedStrings index + $this->sheets = [['name' => 'Sheet1', 'rows' => [], 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '']]; + $this->extLinkId = 0; + $this->SI = []; // sharedStrings index $this->SI_KEYS = []; // & keys - $this->XF = [ // styles - [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_NONE, 0, 0], - [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_GRAY_125, 0, 0], // hack + + // https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_numFmts_topic_ID0E6KK6.html + $this->NF = [ + self::N_RUB => '#,##0.00\ "₽"', + self::N_DOLLAR => '[$$-1]#,##0.00', + self::N_EURO => '#,##0.00\ [$€-1]' ]; - $this->XF_KEYS['0-0-0-0-0-0'] = 0; // & keys - $this->XF_KEYS['0-0-0-16-0-0'] = 1; + $this->NF_KEYS = array_flip($this->NF); + + $this->BR_STYLE = [ + self::B_NONE => 'none', + self::B_THIN => 'thin', + self::B_MEDIUM => 'medium', + self::B_DASHED => 'dashed', + self::B_DOTTED => 'dotted', + self::B_THICK => 'thick', + self::B_DOUBLE => 'double', + self::B_HAIR => 'hair', + self::B_MEDIUM_DASHED => 'mediumDashed', + self::B_DASH_DOT => 'dashDot', + self::B_MEDIUM_DASH_DOT => 'mediumDashDot', + self::B_DASH_DOT_DOT => 'dashDotDot', + self::B_MEDIUM_DASH_DOT_DOT => 'mediumDashDotDot', + self::B_SLANT_DASH_DOT => 'slantDashDot' + ]; + + + $this->XF = [ // styles 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor, 6 - border + [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_NONE, 0, 0, ''], + [self::N_NORMAL, self::A_DEFAULT, self::F_NORMAL, self::FL_GRAY_125, 0, 0, ''], // hack + ]; + $this->XF_KEYS[implode('-', $this->XF[0])] = 0; // & keys + $this->XF_KEYS[implode('-', $this->XF[1])] = 1; + $this->template = [ '_rels/.rels' => ' @@ -75,7 +129,7 @@ class SimpleXLSXGen { 'docProps/app.xml' => ' 0 -'.__CLASS__.'', +' . __CLASS__ . '', 'docProps/core.xml' => ' {DATE} @@ -97,9 +151,10 @@ class SimpleXLSXGen { {STRINGS}', 'xl/styles.xml' => ' +{NUMFMTS} {FONTS} {FILLS} - +{BORDERS} {XF} @@ -108,7 +163,7 @@ class SimpleXLSXGen { ', 'xl/workbook.xml' => ' - + {SHEETS} ', '[Content_Types].xml' => ' @@ -128,38 +183,41 @@ class SimpleXLSXGen { // 01001200 // Простой шаблонБудем делать генератор } - public static function fromArray( array $rows, $sheetName = null ) { - return (new static())->addSheet( $rows, $sheetName ); + + public static function fromArray(array $rows, $sheetName = null) + { + return (new static())->addSheet($rows, $sheetName); } - public function addSheet( array $rows, $name = null ) { + public function addSheet(array $rows, $name = null) + { $this->curSheet++; - if ( $name === null ) { // autogenerated sheet names - $name = 'Sheet'.($this->curSheet+1); + if ($name === null) { // autogenerated sheet names + $name = 'Sheet' . ($this->curSheet + 1); } else { $name = mb_substr($name, 0, 31); $names = []; - foreach( $this->sheets as $sh ) { - $names[ mb_strtoupper( $sh['name']) ] = 1; + foreach ($this->sheets as $sh) { + $names[mb_strtoupper($sh['name'])] = 1; } - for( $i = 0; $i < 100; $i++ ) { - $postfix = ' ('.$i.')'; + for ($i = 0; $i < 100; $i++) { + $postfix = ' (' . $i . ')'; $new_name = ($i === 0) ? $name : $name . $postfix; if (mb_strlen($new_name) > 31) { - $new_name = mb_substr($name,0, 31-mb_strlen($postfix)) . $postfix; + $new_name = mb_substr($name, 0, 31 - mb_strlen($postfix)) . $postfix; } - $NEW_NAME = mb_strtoupper( $new_name ); - if ( !isset( $names[ $NEW_NAME ]) ) { + $NEW_NAME = mb_strtoupper($new_name); + if (!isset($names[$NEW_NAME])) { $name = $new_name; break; } } } - $this->sheets[$this->curSheet] = ['name' => $name, 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '' ]; + $this->sheets[$this->curSheet] = ['name' => $name, 'hyperlinks' => [], 'mergecells' => [], 'colwidth' => [], 'autofilter' => '']; - if ( isset( $rows[0] ) && is_array($rows[0]) ) { + if (isset($rows[0]) && is_array($rows[0])) { $this->sheets[$this->curSheet]['rows'] = $rows; } else { $this->sheets[$this->curSheet]['rows'] = []; @@ -167,28 +225,30 @@ class SimpleXLSXGen { return $this; } - public function __toString() { - $fh = fopen( 'php://memory', 'wb' ); - if ( ! $fh ) { + public function __toString() + { + $fh = fopen('php://memory', 'wb'); + if (!$fh) { return ''; } - if ( ! $this->_write( $fh ) ) { - fclose( $fh ); + if (!$this->_write($fh)) { + fclose($fh); return ''; } - $size = ftell( $fh ); - fseek( $fh, 0); + $size = ftell($fh); + fseek($fh, 0); - return (string) fread( $fh, $size ); + return (string)fread($fh, $size); } - public function saveAs( $filename ) { - $fh = fopen( $filename, 'wb' ); + public function saveAs($filename) + { + $fh = fopen($filename, 'wb'); if (!$fh) { return false; } - if ( !$this->_write($fh) ) { + if (!$this->_write($fh)) { fclose($fh); return false; } @@ -197,183 +257,256 @@ class SimpleXLSXGen { return true; } - public function download() { - return $this->downloadAs( gmdate('YmdHi') . '.xlsx' ); + public function download() + { + return $this->downloadAs(gmdate('YmdHi') . '.xlsx'); } - public function downloadAs( $filename ) { - $fh = fopen('php://memory','wb'); + public function downloadAs($filename) + { + $fh = fopen('php://memory', 'wb'); if (!$fh) { return false; } - if ( !$this->_write( $fh )) { - fclose( $fh ); + if (!$this->_write($fh)) { + fclose($fh); return false; } $size = ftell($fh); header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - header('Content-Disposition: attachment; filename="'.$filename.'"'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s \G\M\T' , time() )); - header('Content-Length: '.$size); + header('Content-Disposition: attachment; filename="' . $filename . '"'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s \G\M\T', time())); + header('Content-Length: ' . $size); - while( ob_get_level() ) { + while (ob_get_level()) { ob_end_clean(); } - fseek($fh,0); - fpassthru( $fh ); + fseek($fh, 0); + fpassthru($fh); fclose($fh); return true; } - protected function _write( $fh ) { + protected function _write($fh) + { - $dirSignatureE= "\x50\x4b\x05\x06"; // end of central dir signature - $zipComments = 'Generated by '.__CLASS__.' PHP class, thanks sergey.shuchkin@gmail.com'; + $dirSignatureE = "\x50\x4b\x05\x06"; // end of central dir signature + $zipComments = 'Generated by ' . __CLASS__ . ' PHP class, thanks sergey.shuchkin@gmail.com'; if (!$fh) { return false; } - $cdrec = ''; // central directory content - $entries= 0; // number of zipped files - $cnt_sheets = count( $this->sheets ); + $cdrec = ''; // central directory content + $entries = 0; // number of zipped files + $cnt_sheets = count($this->sheets); - foreach ($this->template as $cfilename => $template ) { - if ( $cfilename === 'xl/_rels/workbook.xml.rels' ) { + foreach ($this->template as $cfilename => $template) { + if ($cfilename === 'xl/_rels/workbook.xml.rels') { $s = ''; - for ( $i = 0; $i < $cnt_sheets; $i++) { - $s .= '\n"; + for ($i = 0; $i < $cnt_sheets; $i++) { + $s .= '\n"; } - $s .= ''; + $s .= ''; $template = str_replace('{SHEETS}', $s, $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/workbook.xml' ) { + } elseif ($cfilename === 'xl/workbook.xml') { $s = ''; - foreach ( $this->sheets as $k => $v ) { - $s .= ''; + foreach ($this->sheets as $k => $v) { + $s .= ''; } $template = str_replace('{SHEETS}', $s, $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } - elseif ( $cfilename === 'docProps/core.xml' ) { + } elseif ($cfilename === 'docProps/core.xml') { $template = str_replace('{DATE}', gmdate('Y-m-d\TH:i:s\Z'), $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/sharedStrings.xml' ) { + } elseif ($cfilename === 'xl/sharedStrings.xml') { if (!count($this->SI)) { $this->SI[] = 'No Data'; } $si_cnt = count($this->SI); - $si = ''.implode("\r\n", $this->SI).''; - $template = str_replace(['{CNT}', '{STRINGS}'], [ $si_cnt, $si ], $template ); + $si = '' . implode("\r\n", $this->SI) . ''; + $template = str_replace(['{CNT}', '{STRINGS}'], [$si_cnt, $si], $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/worksheets/sheet1.xml' ) { - foreach ( $this->sheets as $k => $v ) { - $filename = 'xl/worksheets/sheet'.($k+1).'.xml'; + } elseif ($cfilename === 'xl/worksheets/sheet1.xml') { + foreach ($this->sheets as $k => $v) { + $filename = 'xl/worksheets/sheet' . ($k + 1) . '.xml'; $xml = $this->_sheetToXML($k, $template); - $this->_writeEntry($fh, $cdrec, $filename, $xml ); + $this->_writeEntry($fh, $cdrec, $filename, $xml); $entries++; } $xml = null; - } elseif ( $cfilename === 'xl/worksheets/_rels/sheet1.xml.rels' ) { - foreach ( $this->sheets as $k => $v ) { - if ( count($v['hyperlinks'])) { + } elseif ($cfilename === 'xl/worksheets/_rels/sheet1.xml.rels') { + foreach ($this->sheets as $k => $v) { + if ($this->extLinkId) { $RH = []; - $filename = 'xl/worksheets/_rels/sheet' . ( $k + 1 ) . '.xml.rels'; - foreach ( $v['hyperlinks'] as $h ) { - $RH[] = ''; + $filename = 'xl/worksheets/_rels/sheet' . ($k + 1) . '.xml.rels'; + foreach ($v['hyperlinks'] as $h) { + if ($h['ID']) { + $RH[] = ''; + } } - $xml = str_replace( '{HYPERLINKS}', implode( "\r\n", $RH ), $template ); - $this->_writeEntry( $fh, $cdrec, $filename, $xml ); + $xml = str_replace('{HYPERLINKS}', implode("\r\n", $RH), $template); + $this->_writeEntry($fh, $cdrec, $filename, $xml); $entries++; } } $xml = null; - } elseif ( $cfilename === '[Content_Types].xml' ) { + } elseif ($cfilename === '[Content_Types].xml') { $TYPES = ['']; - foreach ( $this->sheets as $k => $v) { - $TYPES[] = ''; - if (count( $v['hyperlinks'])) { - $TYPES[] = ''; + foreach ($this->sheets as $k => $v) { + $TYPES[] = ''; + if ($this->extLinkId) { + $TYPES[] = ''; } } $template = str_replace('{TYPES}', implode("\r\n", $TYPES), $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; - } elseif ( $cfilename === 'xl/styles.xml' ) { - $XF = $FONTS = $F_KEYS = $FILLS = $FL_KEYS = []; -// print_r( $this->XF ); - foreach( $this->XF as $xf ) { - // 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor - // fonts - $F_KEY = $xf[2].'-'.$xf[4]; - if ( isset($F_KEYS[ $F_KEY ]) ) { - $F_ID = $F_KEYS[ $F_KEY ]; - } else { - $F_ID = $F_KEYS[ $F_KEY ] = count( $FONTS ); + } elseif ($cfilename === 'xl/styles.xml') { + $NF = $XF = $FONTS = $F_KEYS = $FILLS = $FL_KEYS = []; + $BR = ['']; + $BR_KEYS = [0 => 0]; - $FONTS[] = '' - . ( $this->defaultFontSize ? '' : '' ) - .( $xf[2] & self::F_BOLD ? '' : '') - .( $xf[2] & self::F_ITALIC ? '' : '') - .( $xf[2] & self::F_UNDERLINE ? '' : '') - .( $xf[2] & self::F_STRIKE ? '' : '') - .( $xf[2] & self::F_HYPERLINK ? '' : '') - .( $xf[2] & self::F_COLOR ? '' : '') - .''; + foreach ($this->NF as $k => $v) { + $NF[] = ''; + } + + foreach ($this->XF as $xf) { + // 0 - num fmt, 1 - align, 2 - font, 3 - fill, 4 - font color, 5 - bgcolor, 6 - border + // fonts + $F_KEY = $xf[2] . '-' . $xf[4]; + if (isset($F_KEYS[$F_KEY])) { + $F_ID = $F_KEYS[$F_KEY]; + } else { + $F_ID = $F_KEYS[$F_KEY] = count($FONTS); + + $FONTS[] = '' + . ($this->defaultFontSize ? '' : '') + . ($xf[2] & self::F_BOLD ? '' : '') + . ($xf[2] & self::F_ITALIC ? '' : '') + . ($xf[2] & self::F_UNDERLINE ? '' : '') + . ($xf[2] & self::F_STRIKE ? '' : '') + . ($xf[2] & self::F_HYPERLINK ? '' : '') + . ($xf[2] & self::F_COLOR ? '' : '') + . ''; } // fills - $FL_KEY = $xf[3].'-'.$xf[5]; + $FL_KEY = $xf[3] . '-' . $xf[5]; if (isset($FL_KEYS[$FL_KEY])) { - $FL_ID = $FL_KEYS[ $FL_KEY ]; + $FL_ID = $FL_KEYS[$FL_KEY]; } else { - $FL_ID = $FL_KEYS[ $FL_KEY ] = count($FILLS); + $FL_ID = $FL_KEYS[$FL_KEY] = count($FILLS); $FILLS[] = '' : ' />') - .''; + . ($xf[3] === 0 ? 'none' : '') + . ($xf[3] & self::FL_SOLID ? 'solid' : '') + . ($xf[3] & self::FL_MEDIUM_GRAY ? 'mediumGray' : '') + . ($xf[3] & self::FL_DARK_GRAY ? 'darkGray' : '') + . ($xf[3] & self::FL_LIGHT_GRAY ? 'lightGray' : '') + . ($xf[3] & self::FL_GRAY_125 ? 'gray125' : '') + . '"' + . ($xf[3] & self::FL_COLOR ? '>' : ' />') + . ''; } $align = ($xf[1] & self::A_LEFT ? ' horizontal="left"' : '') - .($xf[1] & self::A_RIGHT ? ' horizontal="right"' : '') - .($xf[1] & self::A_CENTER ? ' horizontal="center"' : '') - .($xf[1] & self::A_TOP ? ' vertical="top"' : '') - .($xf[1] & self::A_MIDDLE ? ' vertical="center"' : '') - .($xf[1] & self::A_BOTTOM ? ' vertical="bottom"' : '') - .($xf[1] & self::A_WRAPTEXT ? ' wrapText="1"' : ''); + . ($xf[1] & self::A_RIGHT ? ' horizontal="right"' : '') + . ($xf[1] & self::A_CENTER ? ' horizontal="center"' : '') + . ($xf[1] & self::A_TOP ? ' vertical="top"' : '') + . ($xf[1] & self::A_MIDDLE ? ' vertical="center"' : '') + . ($xf[1] & self::A_BOTTOM ? ' vertical="bottom"' : '') + . ($xf[1] & self::A_WRAPTEXT ? ' wrapText="1"' : ''); - $XF[] = ' 0 ? ' applyNumberFormat="1"' : '') - .($F_ID > 0 ? ' applyFont="1"' : '') - .($FL_ID > 0 ? ' applyFill="1"' : '') - .($align ? ' applyAlignment="1">' : '/>'); + // border + $BR_ID = 0; + if ($xf[6] !== '') { + $b = $xf[6]; + if (isset($BR_KEYS[$b])) { + $BR_ID = $BR_KEYS[$b]; + } else { + $BR_ID = count($BR_KEYS); + $BR_KEYS[$b] = $BR_ID; + $border = ''; + $ba = explode(' ', $b); + if (!isset($ba[1])) { + $ba[] = $ba[0]; + $ba[] = $ba[0]; + $ba[] = $ba[0]; + } + if (!isset($ba[4])) { // diagonal + $ba[] = 'none'; + } + $sides = [ 'left' => 3, 'right' => 1, 'top' => 0, 'bottom' => 2, 'diagonal' => 4]; + foreach ($sides as $side => $idx) { + $s = ''; + $c = ''; + + $va = explode('#', $ba[$idx]); + if (isset($va[1])) { + $s = $va[0] === '' ? 'thin' : $va[0]; + $c = $va[1]; + } elseif (in_array($va[0], $this->BR_STYLE, true)) { + $s = $va[0]; + } else { + $s = 'thin'; + $c = $va[0]; + } + if (strlen($c) === 6) { + $c = 'FF' . $c; + } + + if ($s && $s !== 'none') { + $border .= '<' . $side . ' style="' . $s . '">' + . '' + . ''; + } else { + $border .= '<' . $side . '/>'; + } + + } + $border .= ''; + $BR[] = $border; + } + } + + + $XF[] = ' 0 ? ' applyNumberFormat="1"' : '') + . ($F_ID > 0 ? ' applyFont="1"' : '') + . ($FL_ID > 0 ? ' applyFill="1"' : '') + . ($BR_ID > 0 ? ' applyBorder="1"' : '') + . ($align ? ' applyAlignment="1">' : '/>'); } - // wrap collections - array_unshift( $XF, ''); - $XF[] = ''; - array_unshift($FONTS, ''); - $FONTS[] = ''; - array_unshift($FILLS, ''); - $FILLS[] = ''; - $template = str_replace(['{FONTS}','{XF}','{FILLS}'], [implode("\r\n", $FONTS), implode("\r\n", $XF), implode("\r\n", $FILLS)], $template); + + // wrap collections + array_unshift($NF, ''); + $NF[] = ''; + array_unshift($XF, ''); + $XF[] = ''; + array_unshift($FONTS, ''); + $FONTS[] = ''; + array_unshift($FILLS, ''); + $FILLS[] = ''; + array_unshift($BR, ''); + $BR[] = ''; + + $template = str_replace( + ['{NUMFMTS}', '{FONTS}', '{XF}', '{FILLS}', '{BORDERS}'], + [implode("\r\n", $NF), implode("\r\n", $FONTS), implode("\r\n", $XF), implode("\r\n", $FILLS), implode("\r\n", $BR)], + $template); $this->_writeEntry($fh, $cdrec, $cfilename, $template); $entries++; } else { @@ -390,15 +523,16 @@ class SimpleXLSXGen { fwrite($fh, pack('v', 0)); // number of the disk with the start of the central directory fwrite($fh, pack('v', $entries)); // total # of entries "on this disk" fwrite($fh, pack('v', $entries)); // total # of entries overall - fwrite($fh, pack('V', mb_strlen($cdrec,'8bit'))); // size of central dir + fwrite($fh, pack('V', mb_strlen($cdrec, '8bit'))); // size of central dir fwrite($fh, pack('V', $before_cd)); // offset to start of central dir - fwrite($fh, pack('v', mb_strlen($zipComments,'8bit'))); // .zip file comment length + fwrite($fh, pack('v', mb_strlen($zipComments, '8bit'))); // .zip file comment length fwrite($fh, $zipComments); return true; } - protected function _writeEntry($fh, &$cdrec, $cfilename, $data) { + protected function _writeEntry($fh, &$cdrec, $cfilename, $data) + { $zipSignature = "\x50\x4b\x03\x04"; // local file header signature $dirSignature = "\x50\x4b\x01\x02"; // central dir header signature @@ -406,29 +540,29 @@ class SimpleXLSXGen { $e['uncsize'] = mb_strlen($data, '8bit'); // if data to compress is too small, just store it - if($e['uncsize'] < 256){ + if ($e['uncsize'] < 256) { $e['comsize'] = $e['uncsize']; $e['vneeded'] = 10; $e['cmethod'] = 0; $zdata = $data; - } else{ // otherwise, compress it + } else { // otherwise, compress it $zdata = gzcompress($data); - $zdata = substr(substr($zdata, 0, - 4 ), 2); // fix crc bug (thanks to Eric Mueller) + $zdata = substr(substr($zdata, 0, -4), 2); // fix crc bug (thanks to Eric Mueller) $e['comsize'] = mb_strlen($zdata, '8bit'); $e['vneeded'] = 10; $e['cmethod'] = 8; } $e['bitflag'] = 0; - $e['crc_32'] = crc32($data); + $e['crc_32'] = crc32($data); // Convert date and time to DOS Format, and set then - $lastmod_timeS = str_pad(decbin(date('s')>=32?date('s')-32:date('s')), 5, '0', STR_PAD_LEFT); - $lastmod_timeM = str_pad(decbin(date('i')), 6, '0', STR_PAD_LEFT); - $lastmod_timeH = str_pad(decbin(date('H')), 5, '0', STR_PAD_LEFT); - $lastmod_dateD = str_pad(decbin(date('d')), 5, '0', STR_PAD_LEFT); - $lastmod_dateM = str_pad(decbin(date('m')), 4, '0', STR_PAD_LEFT); - $lastmod_dateY = str_pad(decbin(date('Y')-1980), 7, '0', STR_PAD_LEFT); + $lastmod_timeS = str_pad(decbin(date('s') >= 32 ? date('s') - 32 : date('s')), 5, '0', STR_PAD_LEFT); + $lastmod_timeM = str_pad(decbin(date('i')), 6, '0', STR_PAD_LEFT); + $lastmod_timeH = str_pad(decbin(date('H')), 5, '0', STR_PAD_LEFT); + $lastmod_dateD = str_pad(decbin(date('d')), 5, '0', STR_PAD_LEFT); + $lastmod_dateM = str_pad(decbin(date('m')), 4, '0', STR_PAD_LEFT); + $lastmod_dateY = str_pad(decbin(date('Y') - 1980), 7, '0', STR_PAD_LEFT); # echo "ModTime: $lastmod_timeS-$lastmod_timeM-$lastmod_timeH (".date("s H H").")\n"; # echo "ModDate: $lastmod_dateD-$lastmod_dateM-$lastmod_dateY (".date("d m Y").")\n"; @@ -453,8 +587,8 @@ class SimpleXLSXGen { fwrite($fh, $zdata); // Append it to central dir - $e['external_attributes'] = (substr($cfilename, -1) === '/'&&!$zdata)?16:32; // Directory or file name - $e['comments'] = ''; + $e['external_attributes'] = (substr($cfilename, -1) === '/' && !$zdata) ? 16 : 32; // Directory or file name + $e['comments'] = ''; $cdrec .= $dirSignature; $cdrec .= "\x0\x0"; // version made by @@ -466,9 +600,9 @@ class SimpleXLSXGen { $cdrec .= pack('V', $e['crc_32']); // crc32 $cdrec .= pack('V', $e['comsize']); // compressed filesize $cdrec .= pack('V', $e['uncsize']); // uncompressed filesize - $cdrec .= pack('v', mb_strlen($cfilename,'8bit')); // file name length + $cdrec .= pack('v', mb_strlen($cfilename, '8bit')); // file name length $cdrec .= pack('v', 0); // extra field length - $cdrec .= pack('v', mb_strlen($e['comments'],'8bit')); // file comment length + $cdrec .= pack('v', mb_strlen($e['comments'], '8bit')); // file comment length $cdrec .= pack('v', 0); // disk number start $cdrec .= pack('v', 0); // internal file attributes $cdrec .= pack('V', $e['external_attributes']); // internal file attributes @@ -477,177 +611,221 @@ class SimpleXLSXGen { $cdrec .= $e['comments']; } - protected function _sheetToXML($idx, $template) { + protected function _sheetToXML($idx, $template) + { // locale floats fr_FR 1.234,56 -> 1234.56 $_loc = setlocale(LC_NUMERIC, 0); - setlocale(LC_NUMERIC,'C'); + setlocale(LC_NUMERIC, 'C'); $COLS = []; $ROWS = []; - if ( count($this->sheets[$idx]['rows']) ) { + if (count($this->sheets[$idx]['rows'])) { $COLS[] = ''; $CUR_ROW = 0; $COL = []; - foreach( $this->sheets[$idx]['rows'] as $r ) { + foreach ($this->sheets[$idx]['rows'] as $r) { $CUR_ROW++; $row = ''; $CUR_COL = 0; $RH = 0; // row height - foreach( $r as $v ) { + foreach ($r as $v) { $CUR_COL++; - if ( !isset($COL[ $CUR_COL ])) { - $COL[ $CUR_COL ] = 0; + if (!isset($COL[$CUR_COL])) { + $COL[$CUR_COL] = 0; } $cname = $this->num2name($CUR_COL) . $CUR_ROW; - if ( $v === null || $v === '' ) { - $row .= ''; + if ($v === null || $v === '') { + $row .= ''; continue; } - $ct = $cv = null; - $N = $A = $F = $FL = $C = $B = 0; + $ct = $cv = $cf = null; + $N = $A = $F = $FL = $C = $BG = 0; + $BR = ''; - if ( is_string($v) ) { + if (is_string($v)) { - if ( $v[0] === "\0" ) { // RAW value as string - $v = substr($v,1); - $vl = mb_strlen( $v ); + if ($v{0} === "\0") { // RAW value as string + $v = substr($v, 1); + $vl = mb_strlen($v); } else { - if ( strpos( $v, '<' ) !== false ) { // tags? - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '<') !== false) { // tags? + if (strpos($v, '') !== false) { $F += self::F_BOLD; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_ITALIC; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_UNDERLINE; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $F += self::F_STRIKE; } - if ( preg_match('/]+)>/', $v, $m ) ) { + if (preg_match('/]+)>/', $v, $m)) { - if ( preg_match('/ color="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ color="([^"]+)"/', $m[1], $m2)) { $F += self::F_COLOR; - $C = strlen($m2[1]) === 8 ? $m2[1] : ('FF' . ltrim($m2[1],'#')); + $c = ltrim($m2[1], '#'); + $C = strlen($c) === 8 ? $c : ('FF' . $c); } - if ( preg_match('/ bgcolor="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ bgcolor="([^"]+)"/', $m[1], $m2)) { $FL += self::FL_COLOR; - $B = strlen($m2[1]) === 8 ? $m2[1] : ('FF' . ltrim($m2[1],'#')); + $c = ltrim($m2[1], '#'); + $BG = strlen($c) === 8 ? $c : ('FF' . $c); } - if ( preg_match('/ height="([^"]+)"/', $m[1], $m2) ) { + if (preg_match('/ height="([^"]+)"/', $m[1], $m2)) { $RH = $m2[1]; } + if (preg_match('/ nf="([^"]+)"/', $m[1], $m2)) { + $c = htmlspecialchars_decode($m2[1], ENT_QUOTES); + $N = $this->getNumFmtId($c); + } + if (preg_match('/ border="([^"]+)"/', $m[1], $m2)) { + $b = htmlspecialchars_decode($m2[1], ENT_QUOTES); + if ($b && $b !== 'none') { + $BR = $b; + } + } } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_LEFT; } - if ( strpos( $v, '
' ) !== false ) { + if (strpos($v, '
') !== false) { $A += self::A_CENTER; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_RIGHT; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_TOP; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_MIDDLE; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_BOTTOM; } - if ( strpos( $v, '' ) !== false ) { + if (strpos($v, '') !== false) { $A += self::A_WRAPTEXT; } - if ( preg_match( '/(.*?)<\/a>/i', $v, $m ) ) { - $h = explode( '#', $m[1] ); - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $h[0], 'L' => isset( $h[1] ) ? $h[1] : '']; + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $h = explode('#', $m[1]); + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $h[0], 'L' => isset($h[1]) ? $h[1] : '']; $F += self::F_HYPERLINK; // Hyperlink } - if ( preg_match( '/(.*?)<\/a>/i', $v, $m ) ) { - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $m[1], 'L' => '']; + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $m[1], 'L' => '']; $F += self::F_HYPERLINK; // mailto hyperlink } - $v = strip_tags( $v ); + if (preg_match('/(.*?)<\/a>/i', $v, $m)) { + $this->sheets[$idx]['hyperlinks'][] = ['ID' => null, 'R' => $cname, 'H' => null, 'L' => $m[1]]; + $F += self::F_HYPERLINK; // internal hyperlink + } + if (preg_match('/]*)>/', $v, $m)) { + $cf = strip_tags($v); + $v = 'formula'; + if (preg_match('/ v="([^"]+)"/', $m[1], $m2)) { + $v = $m2[1]; + } + } else { + $v = strip_tags($v); + } } // tags - $vl = mb_strlen( $v ); - if ( $v === '0' || preg_match( '/^[-+]?[1-9]\d{0,14}$/', $v ) ) { // Integer as General - $cv = ltrim( $v, '+' ); - if ( $vl > 10 ) { + $vl = mb_strlen($v); + if ($N) { + $cv = ltrim($v, '+'); + } elseif ($v === '0' || preg_match('/^[-+]?[1-9]\d{0,14}$/', $v)) { // Integer as General + $cv = ltrim($v, '+'); + if ($vl > 10) { $N = self::N_INT; // [1] 0 } - } elseif ( preg_match( '/^[-+]?(0|[1-9]\d*)\.(\d+)$/', $v, $m ) ) { - $cv = ltrim( $v, '+' ); - if ( strlen( $m[2] ) < 3 ) { + } elseif (preg_match('/^[-+]?(0|[1-9]\d*)\.(\d+)$/', $v, $m)) { + $cv = ltrim($v, '+'); + if (strlen($m[2]) < 3) { $N = self::N_DEC; } - } elseif ( preg_match( '/^([-+]?\d+)%$/', $v, $m ) ) { - $cv = round( $m[1] / 100, 2 ); + } elseif (preg_match('/^(\$)?[-+]?[0-9\.]+( ₽| €)?$/u', $v, $m)) { // currency? + if ($m[1] === '$') { + $N = self::N_DOLLAR; + } elseif ($m[2] === ' ₽') { + $N = self::N_RUB; + } elseif ($m[2] === ' €') { + $N = self::N_EURO; + } + $cv = trim($v, ' +$₽€'); + } elseif (preg_match('/^([-+]?\d+)%$/', $v, $m)) { + $cv = round($m[1] / 100, 2); $N = self::N_PERCENT_INT; // [9] 0% - } elseif ( preg_match( '/^([-+]?\d+\.\d+)%$/', $v, $m ) ) { - $cv = round( $m[1] / 100, 4 ); + } elseif (preg_match('/^([-+]?\d+\.\d+)%$/', $v, $m)) { + $cv = round($m[1] / 100, 4); $N = self::N_PRECENT_DEC; // [10] 0.00% - } elseif ( preg_match( '/^(\d\d\d\d)-(\d\d)-(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[1], $m[2], $m[3] ); + } elseif (preg_match('/^(\d\d\d\d)-(\d\d)-(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[1], $m[2], $m[3]); $N = self::N_DATE; // [14] mm-dd-yy - } elseif ( preg_match( '/^(\d\d)\/(\d\d)\/(\d\d\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[3], $m[2], $m[1] ); + } elseif (preg_match('/^(\d\d)\/(\d\d)\/(\d\d\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[3], $m[2], $m[1]); $N = self::N_DATE; // [14] mm-dd-yy - } elseif ( preg_match( '/^(\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( 0, 0, 0, $m[1], $m[2], $m[3] ); + } elseif (preg_match('/^(\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel(0, 0, 0, $m[1], $m[2], $m[3]); $N = self::N_TIME; // time - } elseif ( preg_match( '/^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[1], $m[2], $m[3], $m[4], $m[5], $m[6] ); - $N = ((int) $m[1] === 0) ? self::N_TIME : self::N_DATETIME; // [22] m/d/yy h:mm - } elseif ( preg_match( '/^(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m ) ) { - $cv = $this->date2excel( $m[3], $m[2], $m[1], $m[4], $m[5], $m[6] ); + } elseif (preg_match('/^(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[1], $m[2], $m[3], $m[4], $m[5], $m[6]); + $N = ((int)$m[1] === 0) ? self::N_TIME : self::N_DATETIME; // [22] m/d/yy h:mm + } elseif (preg_match('/^(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d)$/', $v, $m)) { + $cv = $this->date2excel($m[3], $m[2], $m[1], $m[4], $m[5], $m[6]); $N = self::N_DATETIME; // [22] m/d/yy h:mm - } elseif ( preg_match( '/^[0-9+-.]+$/', $v ) ) { // Long ? + } elseif (preg_match('/^[0-9+-.]+$/', $v)) { // Long ? $A += ($A & (self::A_LEFT | self::A_CENTER)) ? 0 : self::A_RIGHT; - } elseif ( preg_match( '/^https?:\/\/\S+$/i', $v ) ) { - $h = explode( '#', $v ); - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => $h[0], 'L' => isset( $h[1] ) ? $h[1] : '']; + } elseif (preg_match('/^https?:\/\/\S+$/i', $v)) { + $h = explode('#', $v); + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => $h[0], 'L' => isset($h[1]) ? $h[1] : '']; $F += self::F_HYPERLINK; // Hyperlink - } elseif ( preg_match( "/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/", $v ) ) { - $this->sheets[ $idx ]['hyperlinks'][] = ['ID' => 'rId' . ( count( $this->sheets[ $idx ]['hyperlinks'] ) + 1 ), 'R' => $cname, 'H' => 'mailto:' . $v, 'L' => '']; + } elseif (preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/", $v)) { + $this->extLinkId++; + $this->sheets[$idx]['hyperlinks'][] = ['ID' => 'rId' . $this->extLinkId, 'R' => $cname, 'H' => 'mailto:' . $v, 'L' => '']; $F += self::F_HYPERLINK; // Hyperlink } - if ( ($N === self::N_DATE || $N === self::N_DATETIME) && $cv < 0 ) { + if (($N === self::N_DATE || $N === self::N_DATETIME) && $cv < 0) { $cv = null; $N = 0; } } - if ( $cv === null ) { + if ($cv === null) { - $v = $this->esc( $v ); + $v = $this->esc($v); - if ( mb_strlen( $v ) > 160 ) { + if ($cf) { + $ct = 'str'; + $cv = $v; + } elseif (mb_strlen($v) > 160) { $ct = 'inlineStr'; $cv = $v; } else { $ct = 's'; // shared string $cv = false; $skey = '~' . $v; - if ( isset( $this->SI_KEYS[ $skey ] ) ) { - $cv = $this->SI_KEYS[ $skey ]; + if (isset($this->SI_KEYS[$skey])) { + $cv = $this->SI_KEYS[$skey]; } - if ( $cv === false ) { + if ($cv === false) { $this->SI[] = $v; - $cv = count( $this->SI ) - 1; - $this->SI_KEYS[ $skey ] = $cv; + $cv = count($this->SI) - 1; + $this->SI_KEYS[$skey] = $cv; } } } - } elseif ( is_int( $v ) ) { - $vl = mb_strlen( (string) $v ); + } elseif (is_int($v)) { + $vl = mb_strlen((string)$v); $cv = $v; - } elseif ( is_float( $v ) ) { - $vl = mb_strlen( (string) $v ); + } elseif (is_float($v)) { + $vl = mb_strlen((string)$v); $cv = $v; - } elseif ( $v instanceof \DateTime ) { + } elseif ($v instanceof \DateTime) { $vl = 16; $cv = $this->date2excel($v->format('Y'), $v->format('m'), $v->format('d'), $v->format('H'), $v->format('i'), $v->format('s')); $N = self::N_DATETIME; // [22] m/d/yy h:mm @@ -655,43 +833,44 @@ class SimpleXLSXGen { continue; } - $COL[ $CUR_COL ] = max( $vl, $COL[ $CUR_COL ] ); + $COL[$CUR_COL] = max($vl, $COL[$CUR_COL]); $cs = 0; - if ( $N + $A + $F + $FL > 0 ) { + if (($N + $A + $F + $FL > 0) || $BR !== '') { - if ( $FL === self::FL_COLOR ) { + if ($FL === self::FL_COLOR) { $FL += self::FL_SOLID; } - if ( ($F & self::F_HYPERLINK) && !($F & self::F_COLOR)) { + if (($F & self::F_HYPERLINK) && !($F & self::F_COLOR)) { $F += self::F_COLOR; $C = 'FF0563C1'; } - $XF_KEY = $N . '-' . $A . '-' . $F. '-'. $FL . '-' . $C . '-' . $B; + $XF_KEY = $N . '-' . $A . '-' . $F . '-' . $FL . '-' . $C . '-' . $BG . '-' . $BR; // echo $cname .'='.$XF_KEY.PHP_EOL; - if ( isset( $this->XF_KEYS[ $XF_KEY ] ) ) { - $cs = $this->XF_KEYS[ $XF_KEY ]; + if (isset($this->XF_KEYS[$XF_KEY])) { + $cs = $this->XF_KEYS[$XF_KEY]; } - if ( $cs === 0 ) { - $cs = count( $this->XF ); - $this->XF_KEYS[ $XF_KEY ] = $cs; - $this->XF[] = [$N, $A, $F, $FL, $C, $B]; + if ($cs === 0) { + $cs = count($this->XF); + $this->XF_KEYS[$XF_KEY] = $cs; + $this->XF[] = [$N, $A, $F, $FL, $C, $BG, $BR]; } } $row .= '' - . ($ct === 'inlineStr' ? '' . $cv . '' : '' . $cv . '') . "\r\n"; + . ($cf ? '' . $cf . '' : '') + . ($ct === 'inlineStr' ? '' . $cv . '' : '' . $cv . '') . "\r\n"; } - $ROWS[] = ''.$row . ""; + $ROWS[] = '' . $row . ""; } - foreach ( $COL as $k => $max ) { - $w = isset($this->sheets[$idx]['colwidth'][$k]) ? $this->sheets[$idx]['colwidth'][$k] : min( $max+1, 60); - $COLS[] = ''; + foreach ($COL as $k => $max) { + $w = isset($this->sheets[$idx]['colwidth'][$k]) ? $this->sheets[$idx]['colwidth'][$k] : min($max + 1, 60); + $COLS[] = ''; } $COLS[] = ''; - $REF = 'A1:'.$this->num2name(count($COL)) . $CUR_ROW; + $REF = 'A1:' . $this->num2name(count($COL)) . $CUR_ROW; } else { $ROWS[] = '0'; $REF = 'A1:A1'; @@ -699,24 +878,24 @@ class SimpleXLSXGen { $AUTOFILTER = ''; if ($this->sheets[$idx]['autofilter']) { - $AUTOFILTER = ''; + $AUTOFILTER = ''; } $MERGECELLS = []; - if ( count($this->sheets[$idx]['mergecells']) ) { + if (count($this->sheets[$idx]['mergecells'])) { $MERGECELLS[] = ''; - $MERGECELLS[] = ''; - foreach( $this->sheets[$idx]['mergecells'] as $m ) { - $MERGECELLS[] = ''; + $MERGECELLS[] = ''; + foreach ($this->sheets[$idx]['mergecells'] as $m) { + $MERGECELLS[] = ''; } $MERGECELLS[] = ''; } $HYPERLINKS = []; - if ( count( $this->sheets[$idx]['hyperlinks']) ) { + if (count($this->sheets[$idx]['hyperlinks'])) { $HYPERLINKS[] = ''; - foreach ( $this->sheets[$idx]['hyperlinks'] as $h ) { - $HYPERLINKS[] = ''; + foreach ($this->sheets[$idx]['hyperlinks'] as $h) { + $HYPERLINKS[] = ''; } $HYPERLINKS[] = ''; } @@ -724,38 +903,42 @@ class SimpleXLSXGen { //restore locale setlocale(LC_NUMERIC, $_loc); - return str_replace(['{REF}','{COLS}','{ROWS}','{AUTOFILTER}','{MERGECELLS}','{HYPERLINKS}'], - [ $REF, + return str_replace(['{REF}', '{COLS}', '{ROWS}', '{AUTOFILTER}', '{MERGECELLS}', '{HYPERLINKS}'], + [$REF, implode("\r\n", $COLS), - implode("\r\n",$ROWS), + implode("\r\n", $ROWS), $AUTOFILTER, implode("\r\n", $MERGECELLS), implode("\r\n", $HYPERLINKS) ], - $template ); + $template); } - public function num2name($num) { + public function num2name($num) + { $numeric = ($num - 1) % 26; - $letter = chr( 65 + $numeric ); - $num2 = (int) ( ($num-1) / 26 ); - if ( $num2 > 0 ) { - return $this->num2name( $num2 ) . $letter; + $letter = chr(65 + $numeric); + $num2 = (int)(($num - 1) / 26); + if ($num2 > 0) { + return $this->num2name($num2) . $letter; } return $letter; } - public function date2excel($year, $month, $day, $hours=0, $minutes=0, $seconds=0) { + public function date2excel($year, $month, $day, $hours = 0, $minutes = 0, $seconds = 0) + { $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400; - if ( (int) $year === 0 ) { + if ((int)$year === 0) { return $excelTime; } // self::CALENDAR_WINDOWS_1900 $excel1900isLeapYear = True; - if (($year === 1900) && ($month <= 2)) { $excel1900isLeapYear = False; } + if (($year === 1900) && ($month <= 2)) { + $excel1900isLeapYear = False; + } $myExcelBaseDate = 2415020; // Julian base date Adjustment @@ -765,38 +948,68 @@ class SimpleXLSXGen { $month += 9; --$year; } - $century = substr($year,0,2); - $decade = substr($year,2,2); + $century = substr($year, 0, 2); + $decade = substr($year, 2, 2); // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0) $excelDate = floor((146097 * $century) / 4) + floor((1461 * $decade) / 4) + floor((153 * $month + 2) / 5) + $day + 1721119 - $myExcelBaseDate + $excel1900isLeapYear; - return (float) $excelDate + $excelTime; + return (float)$excelDate + $excelTime; } - public function setDefaultFont( $name ) { + + public function setDefaultFont($name) + { $this->defaultFont = $name; return $this; } - public function setDefaultFontSize( $size ) { + + public function setDefaultFontSize($size) + { $this->defaultFontSize = $size; return $this; } - public function autoFilter( $range ) { + public function autoFilter($range) + { $this->sheets[$this->curSheet]['autofilter'] = $range; return $this; } - public function mergeCells( $range ) { + public function mergeCells($range) + { $this->sheets[$this->curSheet]['mergecells'][] = $range; return $this; } - public function setColWidth($col, $width) { + + public function setColWidth($col, $width) + { $this->sheets[$this->curSheet]['colwidth'][$col] = $width; return $this; } - public function esc( $str ) { + + public function esc($str) + { // XML UTF-8: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] // but we use fast version - return str_replace( ['&', '<', '>', "\x00","\x03","\x0B"], ['&', '<', '>', '', '', ''], $str ); + return str_replace(['&', '<', '>', "\x00", "\x03", "\x0B"], ['&', '<', '>', '', '', ''], $str); } + + public function getNumFmtId($code) + { + if (isset($this->NF[$code])) { // id? + return (int)$code; + } + if (isset($this->NF_KEYS[$code])) { + return $this->NF_KEYS[$code]; + } + $id = 197 + count($this->NF); // custom + $this->NF[$id] = $code; + $this->NF_KEYS[$code] = $id; + return $id; + } + + public static function raw($value) + { + return "\0" . (string)$value; + } + } diff --git a/styles.png b/styles.png index 26b8ff401a03e097dccc943be81374d34a86a721..0ad95daa346da39b22057eca00b531d50829afe4 100644 GIT binary patch literal 53137 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 literal 40909 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 ZueiuS$%`@(wkrhqqbR2)TPJN6@;^L;SI7VW