From b148992d6a3a689a837537b3cee76235d447ee10 Mon Sep 17 00:00:00 2001 From: LEFEVRE Franck Date: Wed, 31 Mar 2010 10:28:04 +0000 Subject: [PATCH] Fixed issue #9062: Euro does not appear correctly in formula styles - patch by fvielle git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@297215 c90b9560-bf6c-de11-be94-00142212c4b1 --- Spreadsheet/Excel/Writer/Workbook.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Spreadsheet/Excel/Writer/Workbook.php b/Spreadsheet/Excel/Writer/Workbook.php index e034aa1..aa6a841 100644 --- a/Spreadsheet/Excel/Writer/Workbook.php +++ b/Spreadsheet/Excel/Writer/Workbook.php @@ -1014,12 +1014,23 @@ class Spreadsheet_Excel_Writer_Workbook extends Spreadsheet_Excel_Writer_BIFFwri $length = 3 + strlen($format); // Number of bytes to follow } - $cch = strlen($format); // Length of format string + if ( $this->_BIFF_version == 0x0600 && function_exists('iconv') ) { // Encode format String + if (mb_detect_encoding($format, 'auto') !== 'UTF-16LE'){ + $format = iconv(mb_detect_encoding($format, 'auto'),'UTF-16LE',$format); + } + $encoding = 1; + $cch = function_exists('mb_strlen') ? mb_strlen($format, 'UTF-16LE') : (strlen($format) / 2); + } else { + $encoding = 0; + $cch = strlen($format); // Length of format string + } + $length = strlen($format); - $header = pack("vv", $record, $length); if ($this->_BIFF_version == 0x0600) { + $header = pack("vv", $record, 5 + $length); $data = pack("vvC", $ifmt, $cch, $encoding); } elseif ($this->_BIFF_version == 0x0500) { + $header = pack("vv", $record, 3 + $length); $data = pack("vC", $ifmt, $cch); } $this->_append($header . $data . $format);