1035 Zeilen
28 KiB
PHP
1035 Zeilen
28 KiB
PHP
<?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 = 0x00;
|
|
$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;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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:
|
|
$this->_rotation = 3;
|
|
break;
|
|
case 270:
|
|
$this->_rotation = 2;
|
|
break;
|
|
case -1:
|
|
$this->_rotation = 1;
|
|
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;
|
|
}
|
|
}
|
|
?>
|