libdir.'/pear' . PATH_SEPARATOR . ini_get('include_path')); require_once 'Spreadsheet/Excel/Writer.php'; class EasyWorkbook extends Spreadsheet_Excel_Writer { function &addWorksheet($name = ''){ global $CFG; $index = count($this->_worksheets); $sheetname = $this->_sheetname; if ($name == '') { $name = $sheetname.($index+1); } // Check that sheetname is <= 31 chars (Excel limit before BIFF8). if ($this->_BIFF_version != 0x0600) { if (strlen($name) > 31) { return $this->raiseError("Sheetname $name must be <= 31 chars"); } } // Check that the worksheet name doesn't already exist: a fatal Excel error. $total_worksheets = count($this->_worksheets); for ($i = 0; $i < $total_worksheets; $i++) { if ($this->_worksheets[$i]->getName() == $name) { return $this->raiseError("Worksheet '$name' already exists"); } } $worksheet =& new EasyWorksheet($this->_BIFF_version, $name, $index, $this->_activesheet, $this->_firstsheet, $this->_str_total, $this->_str_unique, $this->_str_table, $this->_url_format, $this->_parser); $this->_worksheets[$index] = &$worksheet; // Store ref for iterator $this->_sheetnames[$index] = $name; // Store EXTERNSHEET names $this->_parser->setExtSheet($name, $index); // Register worksheet name with parser if(!isset($CFG->latinexcelexport) || !$CFG->latinexcelexport) { $worksheet->setInputEncoding('UTF-16LE'); // $worksheet->setInputEncoding('utf-8'); } return $worksheet; } } class EasyWorksheet extends Spreadsheet_Excel_Writer_Worksheet { var $m_format; var $m_formatbox = array(); var $m_workbook; function set_workbook(&$workbook) { $this->m_workbook =& $workbook; } function write($row, $col, $token) { parent::write($row, $col, $token, $this->m_format); } function write_number($row, $col, $num) { parent::writeNumber($row, $col, $num, $this->m_format); } function write_string($row, $col, $str) { parent::writeString($row, $col, feedback_convert_to_win($str), $this->m_format); } function write_formula($row, $col, $formula) { parent::writeFormula($row, $col, $formula, $this->m_format); } function write_url($row, $col, $url, $string = '') { parent::writeUrl($row, $col, $url, $string, $this->m_format); } /** * Setz das aktuelle Format, dass zum Schreiben verwendet wird * Der Formatstring setzt sich aus den folgenden Buchstaben mit folgender Bedeutung zusammen. * = Fett * = kursiv * = zentriert * = linksbündig * = rechtsbündig * = vertikal oben * = vertikal zentriert * = vertikal unten * = unterstrichen X=1-einfach, X=2-doppelt * = währungsformat * = prozentformat * = Rahmen unten X=Stärke * = rahmen oben X=Stärke * = rahmen rechts X=Stärke * = rahmen links X=Stärke * = Schriftfarbe, XXX kann einen der folgenden Farbwerte enthalten: * aqua,cyan,black,blue,brown,magenta,fuchsia,gray, * grey,green,lime,navy,orange,purple,red,silver,white,yellow * Wichtig: alle Werte müssen klein geschrieben werden. * @param string $formatString * @param int $size the size of font in pt * @param boolean $textWrap * @return void */ function setFormat($formatString,$size = 10,$textWrap = true) { //looking for an existing format-signature at the $m_formatbox //this prevents the overflow of formats $signature = $formatString.'_'.$size.'_'.$textWrap; if((count($this->m_formatbox) > 0) AND array_key_exists($signature, $this->m_formatbox)) { $this->m_format = $this->m_formatbox[$signature]; }else { $this->m_format = &$this->m_workbook->addFormat(); if($textWrap) { $this->m_format->setTextWrap(); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setBold(); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setItalic(); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("center"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("left"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("right"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("top"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("vcenter"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setAlign("bottom"); } if(preg_match("//i",$formatString,$treffer) > 0) { $this->m_format->setUnderline(substr($treffer[0],2,1)); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setNumFormat("#,##0.00_)€;[Red]-#,##0.00_)€"); } if(preg_match("//i",$formatString) > 0) { $this->m_format->setNumFormat("#,##0.00%"); } if(preg_match("//i",$formatString,$treffer) > 0) { $this->m_format->setBottom(substr($treffer[0],3,1)); } if(preg_match("//i",$formatString,$treffer) > 0) { $this->m_format->setTop(substr($treffer[0],3,1)); } if(preg_match("//i",$formatString,$treffer) > 0) { $this->m_format->setRight(substr($treffer[0],3,1)); } if(preg_match("//i",$formatString,$treffer) > 0) { $this->m_format->setLeft(substr($treffer[0],3,1)); } if(preg_match("/]+>/",$formatString,$treffer) > 0) { $len = strlen($treffer[0]) - 4; //abzueglich der Zeichen $this->m_format->setColor(substr($treffer[0],3,$len)); } $this->m_format->setSize($size); //save the format with its signature $this->m_formatbox[$signature] = $this->m_format; } } } function feedback_convert_to_win($text) { global $CFG; static $textlib; static $newwincharset; static $oldcharset; if(!isset($textlib)) { $textlib = textlib_get_instance(); } if(!isset($newwincharset)) { if(!isset($CFG->latinexcelexport) || !$CFG->latinexcelexport) { $newwincharset = 'UTF-16LE'; }else { $newwincharset = get_string('localewincharset'); if($newwincharset == '') { $newwincharset = 'windows-1252'; } } } if(!isset($oldcharset)) { $oldcharset = get_string('thischarset'); } //converting
into newline $newtext = str_ireplace('
', "\n", $text); $newtext = str_ireplace('
', "\n", $newtext); return $textlib->convert($newtext, $oldcharset, $newwincharset); } ?>