1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114 |
- <?php
- /*
- * Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
- *
- * The majority of this is _NOT_ my code. I simply ported it from the
- * PERL Spreadsheet::WriteExcel module.
- *
- * The author of the Spreadsheet::WriteExcel module is John McNamara
- * <jmcnamara@cpan.org>
- *
- * I _DO_ maintain this code, and John McNamara has nothing to do with the
- * porting of this code to PHP. Any questions directly related to this
- * class library should be directed to me.
- *
- * License Information:
- *
- * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
- * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- require_once 'PEAR.php';
- /**
- * Class for generating Excel XF records (formats)
- *
- * @author Xavier Noguer <xnoguer@rezebra.com>
- * @category FileFormats
- * @package Spreadsheet_Excel_Writer
- */
- class Spreadsheet_Excel_Writer_Format extends PEAR
- {
- /**
- * The index given by the workbook when creating a new format.
- * @var integer
- */
- var $_xf_index;
- /**
- * Index to the FONT record.
- * @var integer
- */
- var $font_index;
- /**
- * The font name (ASCII).
- * @var string
- */
- var $_font_name;
- /**
- * Height of font (1/20 of a point)
- * @var integer
- */
- var $_size;
- /**
- * Bold style
- * @var integer
- */
- var $_bold;
- /**
- * Bit specifiying if the font is italic.
- * @var integer
- */
- var $_italic;
- /**
- * Index to the cell's color
- * @var integer
- */
- var $_color;
- /**
- * The text underline property
- * @var integer
- */
- var $_underline;
- /**
- * Bit specifiying if the font has strikeout.
- * @var integer
- */
- var $_font_strikeout;
- /**
- * Bit specifiying if the font has outline.
- * @var integer
- */
- var $_font_outline;
- /**
- * Bit specifiying if the font has shadow.
- * @var integer
- */
- var $_font_shadow;
- /**
- * 2 bytes specifiying the script type for the font.
- * @var integer
- */
- var $_font_script;
- /**
- * Byte specifiying the font family.
- * @var integer
- */
- var $_font_family;
- /**
- * Byte specifiying the font charset.
- * @var integer
- */
- var $_font_charset;
- /**
- * An index (2 bytes) to a FORMAT record (number format).
- * @var integer
- */
- var $_num_format;
- /**
- * Bit specifying if formulas are hidden.
- * @var integer
- */
- var $_hidden;
- /**
- * Bit specifying if the cell is locked.
- * @var integer
- */
- var $_locked;
- /**
- * The three bits specifying the text horizontal alignment.
- * @var integer
- */
- var $_text_h_align;
- /**
- * Bit specifying if the text is wrapped at the right border.
- * @var integer
- */
- var $_text_wrap;
- /**
- * The three bits specifying the text vertical alignment.
- * @var integer
- */
- var $_text_v_align;
- /**
- * 1 bit, apparently not used.
- * @var integer
- */
- var $_text_justlast;
- /**
- * The two bits specifying the text rotation.
- * @var integer
- */
- var $_rotation;
- /**
- * The cell's foreground color.
- * @var integer
- */
- var $_fg_color;
- /**
- * The cell's background color.
- * @var integer
- */
- var $_bg_color;
- /**
- * The cell's background fill pattern.
- * @var integer
- */
- var $_pattern;
- /**
- * Style of the bottom border of the cell
- * @var integer
- */
- var $_bottom;
- /**
- * Color of the bottom border of the cell.
- * @var integer
- */
- var $_bottom_color;
- /**
- * Style of the top border of the cell
- * @var integer
- */
- var $_top;
- /**
- * Color of the top border of the cell.
- * @var integer
- */
- var $_top_color;
- /**
- * Style of the left border of the cell
- * @var integer
- */
- var $_left;
- /**
- * Color of the left border of the cell.
- * @var integer
- */
- var $_left_color;
- /**
- * Style of the right border of the cell
- * @var integer
- */
- var $_right;
- /**
- * Color of the right border of the cell.
- * @var integer
- */
- var $_right_color;
- /**
- * Constructor
- *
- * @access private
- * @param integer $index the XF index for the format.
- * @param array $properties array with properties to be set on initialization.
- */
- function Spreadsheet_Excel_Writer_Format($BIFF_version, $index = 0, $properties = array())
- {
- $this->_xf_index = $index;
- $this->_BIFF_version = $BIFF_version;
- $this->font_index = 0;
- $this->_font_name = 'Arial';
- $this->_size = 10;
- $this->_bold = 0x0190;
- $this->_italic = 0;
- $this->_color = 0x7FFF;
- $this->_underline = 0;
- $this->_font_strikeout = 0;
- $this->_font_outline = 0;
- $this->_font_shadow = 0;
- $this->_font_script = 0;
- $this->_font_family = 0;
- $this->_font_charset = 0;
- $this->_num_format = 0;
- $this->_hidden = 0;
- $this->_locked = 0;
- $this->_text_h_align = 0;
- $this->_text_wrap = 0;
- $this->_text_v_align = 2;
- $this->_text_justlast = 0;
- $this->_rotation = 0;
- $this->_fg_color = 0x40;
- $this->_bg_color = 0x41;
- $this->_pattern = 0;
- $this->_bottom = 0;
- $this->_top = 0;
- $this->_left = 0;
- $this->_right = 0;
- $this->_diag = 0;
- $this->_bottom_color = 0x40;
- $this->_top_color = 0x40;
- $this->_left_color = 0x40;
- $this->_right_color = 0x40;
- $this->_diag_color = 0x40;
- // Set properties passed to Spreadsheet_Excel_Writer_Workbook::addFormat()
- foreach ($properties as $property => $value)
- {
- if (method_exists($this, 'set'.ucwords($property))) {
- $method_name = 'set'.ucwords($property);
- $this->$method_name($value);
- }
- }
- }
- /**
- * Generate an Excel BIFF XF record (style or cell).
- *
- * @param string $style The type of the XF record ('style' or 'cell').
- * @return string The XF record
- */
- function getXf($style)
- {
- // Set the type of the XF record and some of the attributes.
- if ($style == 'style') {
- $style = 0xFFF5;
- } else {
- $style = $this->_locked;
- $style |= $this->_hidden << 1;
- }
- // Flags to indicate if attributes have been set.
- $atr_num = ($this->_num_format != 0)?1:0;
- $atr_fnt = ($this->font_index != 0)?1:0;
- $atr_alc = ($this->_text_wrap)?1:0;
- $atr_bdr = ($this->_bottom ||
- $this->_top ||
- $this->_left ||
- $this->_right)?1:0;
- $atr_pat = (($this->_fg_color != 0x40) ||
- ($this->_bg_color != 0x41) ||
- $this->_pattern)?1:0;
- $atr_prot = $this->_locked | $this->_hidden;
- // Zero the default border colour if the border has not been set.
- if ($this->_bottom == 0) {
- $this->_bottom_color = 0;
- }
- if ($this->_top == 0) {
- $this->_top_color = 0;
- }
- if ($this->_right == 0) {
- $this->_right_color = 0;
- }
- if ($this->_left == 0) {
- $this->_left_color = 0;
- }
- if ($this->_diag == 0) {
- $this->_diag_color = 0;
- }
- $record = 0x00E0; // Record identifier
- if ($this->_BIFF_version == 0x0500) {
- $length = 0x0010; // Number of bytes to follow
- }
- if ($this->_BIFF_version == 0x0600) {
- $length = 0x0014;
- }
- $ifnt = $this->font_index; // Index to FONT record
- $ifmt = $this->_num_format; // Index to FORMAT record
- if ($this->_BIFF_version == 0x0500) {
- $align = $this->_text_h_align; // Alignment
- $align |= $this->_text_wrap << 3;
- $align |= $this->_text_v_align << 4;
- $align |= $this->_text_justlast << 7;
- $align |= $this->_rotation << 8;
- $align |= $atr_num << 10;
- $align |= $atr_fnt << 11;
- $align |= $atr_alc << 12;
- $align |= $atr_bdr << 13;
- $align |= $atr_pat << 14;
- $align |= $atr_prot << 15;
- $icv = $this->_fg_color; // fg and bg pattern colors
- $icv |= $this->_bg_color << 7;
- $fill = $this->_pattern; // Fill and border line style
- $fill |= $this->_bottom << 6;
- $fill |= $this->_bottom_color << 9;
- $border1 = $this->_top; // Border line style and color
- $border1 |= $this->_left << 3;
- $border1 |= $this->_right << 6;
- $border1 |= $this->_top_color << 9;
- $border2 = $this->_left_color; // Border color
- $border2 |= $this->_right_color << 7;
- $header = pack("vv", $record, $length);
- $data = pack("vvvvvvvv", $ifnt, $ifmt, $style, $align,
- $icv, $fill,
- $border1, $border2);
- } elseif ($this->_BIFF_version == 0x0600) {
- $align = $this->_text_h_align; // Alignment
- $align |= $this->_text_wrap << 3;
- $align |= $this->_text_v_align << 4;
- $align |= $this->_text_justlast << 7;
- $used_attrib = $atr_num << 2;
- $used_attrib |= $atr_fnt << 3;
- $used_attrib |= $atr_alc << 4;
- $used_attrib |= $atr_bdr << 5;
- $used_attrib |= $atr_pat << 6;
- $used_attrib |= $atr_prot << 7;
- $icv = $this->_fg_color; // fg and bg pattern colors
- $icv |= $this->_bg_color << 7;
- $border1 = $this->_left; // Border line style and color
- $border1 |= $this->_right << 4;
- $border1 |= $this->_top << 8;
- $border1 |= $this->_bottom << 12;
- $border1 |= $this->_left_color << 16;
- $border1 |= $this->_right_color << 23;
- $diag_tl_to_rb = 0; // FIXME: add method
- $diag_tr_to_lb = 0; // FIXME: add method
- $border1 |= $diag_tl_to_rb << 30;
- $border1 |= $diag_tr_to_lb << 31;
- $border2 = $this->_top_color; // Border color
- $border2 |= $this->_bottom_color << 7;
- $border2 |= $this->_diag_color << 14;
- $border2 |= $this->_diag << 21;
- $border2 |= $this->_pattern << 26;
- $header = pack("vv", $record, $length);
- $rotation = $this->_rotation;
- $biff8_options = 0x00;
- $data = pack("vvvC", $ifnt, $ifmt, $style, $align);
- $data .= pack("CCC", $rotation, $biff8_options, $used_attrib);
- $data .= pack("VVv", $border1, $border2, $icv);
- }
- return($header . $data);
- }
- /**
- * Generate an Excel BIFF FONT record.
- *
- * @return string The FONT record
- */
- function getFont()
- {
- $dyHeight = $this->_size * 20; // Height of font (1/20 of a point)
- $icv = $this->_color; // Index to color palette
- $bls = $this->_bold; // Bold style
- $sss = $this->_font_script; // Superscript/subscript
- $uls = $this->_underline; // Underline
- $bFamily = $this->_font_family; // Font family
- $bCharSet = $this->_font_charset; // Character set
- $encoding = 0; // TODO: Unicode support
- $cch = strlen($this->_font_name); // Length of font name
- $record = 0x31; // Record identifier
- if ($this->_BIFF_version == 0x0500) {
- $length = 0x0F + $cch; // Record length
- } elseif ($this->_BIFF_version == 0x0600) {
- $length = 0x10 + $cch;
- }
- $reserved = 0x00; // Reserved
- $grbit = 0x00; // Font attributes
- if ($this->_italic) {
- $grbit |= 0x02;
- }
- if ($this->_font_strikeout) {
- $grbit |= 0x08;
- }
- if ($this->_font_outline) {
- $grbit |= 0x10;
- }
- if ($this->_font_shadow) {
- $grbit |= 0x20;
- }
- $header = pack("vv", $record, $length);
- if ($this->_BIFF_version == 0x0500) {
- $data = pack("vvvvvCCCCC", $dyHeight, $grbit, $icv, $bls,
- $sss, $uls, $bFamily,
- $bCharSet, $reserved, $cch);
- } elseif ($this->_BIFF_version == 0x0600) {
- $data = pack("vvvvvCCCCCC", $dyHeight, $grbit, $icv, $bls,
- $sss, $uls, $bFamily,
- $bCharSet, $reserved, $cch, $encoding);
- }
- return($header . $data . $this->_font_name);
- }
- /**
- * Returns a unique hash key for a font.
- * Used by Spreadsheet_Excel_Writer_Workbook::_storeAllFonts()
- *
- * The elements that form the key are arranged to increase the probability of
- * generating a unique key. Elements that hold a large range of numbers
- * (eg. _color) are placed between two binary elements such as _italic
- *
- * @return string A key for this font
- */
- function getFontKey()
- {
- $key = "$this->_font_name$this->_size";
- $key .= "$this->_font_script$this->_underline";
- $key .= "$this->_font_strikeout$this->_bold$this->_font_outline";
- $key .= "$this->_font_family$this->_font_charset";
- $key .= "$this->_font_shadow$this->_color$this->_italic";
- $key = str_replace(' ', '_', $key);
- return ($key);
- }
- /**
- * Returns the index used by Spreadsheet_Excel_Writer_Worksheet::_XF()
- *
- * @return integer The index for the XF record
- */
- function getXfIndex()
- {
- return($this->_xf_index);
- }
- /**
- * Used in conjunction with the set_xxx_color methods to convert a color
- * string into a number. Color range is 0..63 but we will restrict it
- * to 8..63 to comply with Gnumeric. Colors 0..7 are repeated in 8..15.
- *
- * @access private
- * @param string $name_color name of the color (i.e.: 'blue', 'red', etc..). Optional.
- * @return integer The color index
- */
- function _getColor($name_color = '')
- {
- $colors = array(
- 'aqua' => 0x0F,
- 'cyan' => 0x0F,
- 'black' => 0x08,
- 'blue' => 0x0C,
- 'brown' => 0x10,
- 'magenta' => 0x0E,
- 'fuchsia' => 0x0E,
- 'gray' => 0x17,
- 'grey' => 0x17,
- 'green' => 0x11,
- 'lime' => 0x0B,
- 'navy' => 0x12,
- 'orange' => 0x35,
- 'purple' => 0x14,
- 'red' => 0x0A,
- 'silver' => 0x16,
- 'white' => 0x09,
- 'yellow' => 0x0D
- );
- // Return the default color, 0x7FFF, if undef,
- if ($name_color == '') {
- return(0x7FFF);
- }
- // or the color string converted to an integer,
- if (isset($colors[$name_color])) {
- return($colors[$name_color]);
- }
- // or the default color if string is unrecognised,
- if (preg_match("/\D/",$name_color)) {
- return(0x7FFF);
- }
- // or an index < 8 mapped into the correct range,
- if ($name_color < 8) {
- return($name_color + 8);
- }
- // or the default color if arg is outside range,
- if ($name_color > 63) {
- return(0x7FFF);
- }
- // or an integer in the valid range
- return($name_color);
- }
- /**
- * Set cell alignment.
- *
- * @access public
- * @param string $location alignment for the cell ('left', 'right', etc...).
- */
- function setAlign($location)
- {
- if (preg_match("/\d/",$location)) {
- return; // Ignore numbers
- }
- $location = strtolower($location);
- if ($location == 'left') {
- $this->_text_h_align = 1;
- }
- if ($location == 'centre') {
- $this->_text_h_align = 2;
- }
- if ($location == 'center') {
- $this->_text_h_align = 2;
- }
- if ($location == 'right') {
- $this->_text_h_align = 3;
- }
- if ($location == 'fill') {
- $this->_text_h_align = 4;
- }
- if ($location == 'justify') {
- $this->_text_h_align = 5;
- }
- if ($location == 'merge') {
- $this->_text_h_align = 6;
- }
- if ($location == 'equal_space') { // For T.K.
- $this->_text_h_align = 7;
- }
- if ($location == 'top') {
- $this->_text_v_align = 0;
- }
- if ($location == 'vcentre') {
- $this->_text_v_align = 1;
- }
- if ($location == 'vcenter') {
- $this->_text_v_align = 1;
- }
- if ($location == 'bottom') {
- $this->_text_v_align = 2;
- }
- if ($location == 'vjustify') {
- $this->_text_v_align = 3;
- }
- if ($location == 'vequal_space') { // For T.K.
- $this->_text_v_align = 4;
- }
- }
- /**
- * Set cell horizontal alignment.
- *
- * @access public
- * @param string $location alignment for the cell ('left', 'right', etc...).
- */
- function setHAlign($location)
- {
- if (preg_match("/\d/",$location)) {
- return; // Ignore numbers
- }
- $location = strtolower($location);
- if ($location == 'left') {
- $this->_text_h_align = 1;
- }
- if ($location == 'centre') {
- $this->_text_h_align = 2;
- }
- if ($location == 'center') {
- $this->_text_h_align = 2;
- }
- if ($location == 'right') {
- $this->_text_h_align = 3;
- }
- if ($location == 'fill') {
- $this->_text_h_align = 4;
- }
- if ($location == 'justify') {
- $this->_text_h_align = 5;
- }
- if ($location == 'merge') {
- $this->_text_h_align = 6;
- }
- if ($location == 'equal_space') { // For T.K.
- $this->_text_h_align = 7;
- }
- }
- /**
- * Set cell vertical alignment.
- *
- * @access public
- * @param string $location alignment for the cell ('top', 'vleft', 'vright', etc...).
- */
- function setVAlign($location)
- {
- if (preg_match("/\d/",$location)) {
- return; // Ignore numbers
- }
- $location = strtolower($location);
- if ($location == 'top') {
- $this->_text_v_align = 0;
- }
- if ($location == 'vcentre') {
- $this->_text_v_align = 1;
- }
- if ($location == 'vcenter') {
- $this->_text_v_align = 1;
- }
- if ($location == 'bottom') {
- $this->_text_v_align = 2;
- }
- if ($location == 'vjustify') {
- $this->_text_v_align = 3;
- }
- if ($location == 'vequal_space') { // For T.K.
- $this->_text_v_align = 4;
- }
- }
- /**
- * This is an alias for the unintuitive setAlign('merge')
- *
- * @access public
- */
- function setMerge()
- {
- $this->setAlign('merge');
- }
- /**
- * Sets the boldness of the text.
- * Bold has a range 100..1000.
- * 0 (400) is normal. 1 (700) is bold.
- *
- * @access public
- * @param integer $weight Weight for the text, 0 maps to 400 (normal text),
- 1 maps to 700 (bold text). Valid range is: 100-1000.
- It's Optional, default is 1 (bold).
- */
- function setBold($weight = 1)
- {
- if ($weight == 1) {
- $weight = 0x2BC; // Bold text
- }
- if ($weight == 0) {
- $weight = 0x190; // Normal text
- }
- if ($weight < 0x064) {
- $weight = 0x190; // Lower bound
- }
- if ($weight > 0x3E8) {
- $weight = 0x190; // Upper bound
- }
- $this->_bold = $weight;
- }
- /************************************
- * FUNCTIONS FOR SETTING CELLS BORDERS
- */
- /**
- * Sets the width for the bottom border of the cell
- *
- * @access public
- * @param integer $style style of the cell border. 1 => thin, 2 => thick.
- */
- function setBottom($style)
- {
- $this->_bottom = $style;
- }
- /**
- * Sets the width for the top border of the cell
- *
- * @access public
- * @param integer $style style of the cell top border. 1 => thin, 2 => thick.
- */
- function setTop($style)
- {
- $this->_top = $style;
- }
- /**
- * Sets the width for the left border of the cell
- *
- * @access public
- * @param integer $style style of the cell left border. 1 => thin, 2 => thick.
- */
- function setLeft($style)
- {
- $this->_left = $style;
- }
- /**
- * Sets the width for the right border of the cell
- *
- * @access public
- * @param integer $style style of the cell right border. 1 => thin, 2 => thick.
- */
- function setRight($style)
- {
- $this->_right = $style;
- }
- /**
- * Set cells borders to the same style
- *
- * @access public
- * @param integer $style style to apply for all cell borders. 1 => thin, 2 => thick.
- */
- function setBorder($style)
- {
- $this->setBottom($style);
- $this->setTop($style);
- $this->setLeft($style);
- $this->setRight($style);
- }
- /*******************************************
- * FUNCTIONS FOR SETTING CELLS BORDERS COLORS
- */
- /**
- * Sets all the cell's borders to the same color
- *
- * @access public
- * @param mixed $color The color we are setting. Either a string (like 'blue'),
- * or an integer (range is [8...63]).
- */
- function setBorderColor($color)
- {
- $this->setBottomColor($color);
- $this->setTopColor($color);
- $this->setLeftColor($color);
- $this->setRightColor($color);
- }
- /**
- * Sets the cell's bottom border color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setBottomColor($color)
- {
- $value = $this->_getColor($color);
- $this->_bottom_color = $value;
- }
- /**
- * Sets the cell's top border color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setTopColor($color)
- {
- $value = $this->_getColor($color);
- $this->_top_color = $value;
- }
- /**
- * Sets the cell's left border color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setLeftColor($color)
- {
- $value = $this->_getColor($color);
- $this->_left_color = $value;
- }
- /**
- * Sets the cell's right border color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setRightColor($color)
- {
- $value = $this->_getColor($color);
- $this->_right_color = $value;
- }
- /**
- * Sets the cell's foreground color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setFgColor($color)
- {
- $value = $this->_getColor($color);
- $this->_fg_color = $value;
- if ($this->_pattern == 0) { // force color to be seen
- $this->_pattern = 1;
- }
- }
- /**
- * Sets the cell's background color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setBgColor($color)
- {
- $value = $this->_getColor($color);
- $this->_bg_color = $value;
- if ($this->_pattern == 0) { // force color to be seen
- $this->_pattern = 1;
- }
- }
- /**
- * Sets the cell's color
- *
- * @access public
- * @param mixed $color either a string (like 'blue'), or an integer (range is [8...63]).
- */
- function setColor($color)
- {
- $value = $this->_getColor($color);
- $this->_color = $value;
- }
- /**
- * Sets the fill pattern attribute of a cell
- *
- * @access public
- * @param integer $arg Optional. Defaults to 1. Meaningful values are: 0-18,
- * 0 meaning no background.
- */
- function setPattern($arg = 1)
- {
- $this->_pattern = $arg;
- }
- /**
- * Sets the underline of the text
- *
- * @access public
- * @param integer $underline The value for underline. Possible values are:
- * 1 => underline, 2 => double underline.
- */
- function setUnderline($underline)
- {
- $this->_underline = $underline;
- }
- /**
- * Sets the font style as italic
- *
- * @access public
- */
- function setItalic()
- {
- $this->_italic = 1;
- }
- /**
- * Sets the font size
- *
- * @access public
- * @param integer $size The font size (in pixels I think).
- */
- function setSize($size)
- {
- $this->_size = $size;
- }
- /**
- * Sets text wrapping
- *
- * @access public
- */
- function setTextWrap()
- {
- $this->_text_wrap = 1;
- }
- /**
- * Sets the orientation of the text
- *
- * @access public
- * @param integer $angle The rotation angle for the text (clockwise). Possible
- values are: 0, 90, 270 and -1 for stacking top-to-bottom.
- */
- function setTextRotation($angle)
- {
- switch ($angle)
- {
- case 0:
- $this->_rotation = 0;
- break;
- case 90:
- if ($this->_BIFF_version == 0x0500) {
- $this->_rotation = 3;
- } elseif ($this->_BIFF_version == 0x0600) {
- $this->_rotation = 180;
- }
- break;
- case 270:
- if ($this->_BIFF_version == 0x0500) {
- $this->_rotation = 2;
- } elseif ($this->_BIFF_version == 0x0600) {
- $this->_rotation = 90;
- }
- break;
- case -1:
- if ($this->_BIFF_version == 0x0500) {
- $this->_rotation = 1;
- } elseif ($this->_BIFF_version == 0x0600) {
- $this->_rotation = 255;
- }
- break;
- default :
- return $this->raiseError("Invalid value for angle.".
- " Possible values are: 0, 90, 270 and -1 ".
- "for stacking top-to-bottom.");
- $this->_rotation = 0;
- break;
- }
- }
- /**
- * Sets the numeric format.
- * It can be date, time, currency, etc...
- *
- * @access public
- * @param integer $num_format The numeric format.
- */
- function setNumFormat($num_format)
- {
- $this->_num_format = $num_format;
- }
- /**
- * Sets font as strikeout.
- *
- * @access public
- */
- function setStrikeOut()
- {
- $this->_font_strikeout = 1;
- }
- /**
- * Sets outlining for a font.
- *
- * @access public
- */
- function setOutLine()
- {
- $this->_font_outline = 1;
- }
- /**
- * Sets font as shadow.
- *
- * @access public
- */
- function setShadow()
- {
- $this->_font_shadow = 1;
- }
- /**
- * Sets the script type of the text
- *
- * @access public
- * @param integer $script The value for script type. Possible values are:
- * 1 => superscript, 2 => subscript.
- */
- function setScript($script)
- {
- $this->_font_script = $script;
- }
- /**
- * Locks a cell.
- *
- * @access public
- */
- function setLocked()
- {
- $this->_locked = 1;
- }
- /**
- * Unlocks a cell. Useful for unprotecting particular cells of a protected sheet.
- *
- * @access public
- */
- function setUnLocked()
- {
- $this->_locked = 0;
- }
- /**
- * Sets the font family name.
- *
- * @access public
- * @param string $fontfamily The font family name. Possible values are:
- * 'Times New Roman', 'Arial', 'Courier'.
- */
- function setFontFamily($font_family)
- {
- $this->_font_name = $font_family;
- }
- }
- ?>
|