private function PHPExcel_Writer_Excel5_Worksheet::_writeCFRule in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php \PHPExcel_Writer_Excel5_Worksheet::_writeCFRule()
* Write CFRule Record *
Parameters
PHPExcel_Style_Conditional $conditional:
1 call to PHPExcel_Writer_Excel5_Worksheet::_writeCFRule()
- PHPExcel_Writer_Excel5_Worksheet::close in vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel5/ Worksheet.php - * Add data to the beginning of the workbook (note the reverse order) * and to the end of the workbook. * * @access public *
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel5/ Worksheet.php, line 3024
Class
- PHPExcel_Writer_Excel5_Worksheet
- PHPExcel_Writer_Excel5_Worksheet
Code
private function _writeCFRule(PHPExcel_Style_Conditional $conditional) {
$record = 0x1b1;
// Record identifier
// $type : Type of the CF
// $operatorType : Comparison operator
if ($conditional
->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) {
$type = 0x2;
$operatorType = 0x0;
}
else {
if ($conditional
->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) {
$type = 0x1;
switch ($conditional
->getOperatorType()) {
case PHPExcel_Style_Conditional::OPERATOR_NONE:
$operatorType = 0x0;
break;
case PHPExcel_Style_Conditional::OPERATOR_EQUAL:
$operatorType = 0x3;
break;
case PHPExcel_Style_Conditional::OPERATOR_GREATERTHAN:
$operatorType = 0x5;
break;
case PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL:
$operatorType = 0x7;
break;
case PHPExcel_Style_Conditional::OPERATOR_LESSTHAN:
$operatorType = 0x6;
break;
case PHPExcel_Style_Conditional::OPERATOR_LESSTHANOREQUAL:
$operatorType = 0x8;
break;
case PHPExcel_Style_Conditional::OPERATOR_NOTEQUAL:
$operatorType = 0x4;
break;
case PHPExcel_Style_Conditional::OPERATOR_BETWEEN:
$operatorType = 0x1;
break;
}
}
}
// $szValue1 : size of the formula data for first value or formula
// $szValue2 : size of the formula data for second value or formula
$arrConditions = $conditional
->getConditions();
$numConditions = sizeof($arrConditions);
if ($numConditions == 1) {
$szValue1 = $arrConditions[0] <= 65535 ? 3 : 0x0;
$szValue2 = 0x0;
$operand1 = pack('Cv', 0x1e, $arrConditions[0]);
$operand2 = null;
}
else {
if ($numConditions == 2 && $conditional
->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BETWEEN) {
$szValue1 = $arrConditions[0] <= 65535 ? 3 : 0x0;
$szValue2 = $arrConditions[1] <= 65535 ? 3 : 0x0;
$operand1 = pack('Cv', 0x1e, $arrConditions[0]);
$operand2 = pack('Cv', 0x1e, $arrConditions[1]);
}
else {
$szValue1 = 0x0;
$szValue2 = 0x0;
$operand1 = null;
$operand2 = null;
}
}
// $flags : Option flags
// Alignment
$bAlignHz = $conditional
->getStyle()
->getAlignment()
->getHorizontal() == null ? 1 : 0;
$bAlignVt = $conditional
->getStyle()
->getAlignment()
->getVertical() == null ? 1 : 0;
$bAlignWrapTx = $conditional
->getStyle()
->getAlignment()
->getWrapText() == false ? 1 : 0;
$bTxRotation = $conditional
->getStyle()
->getAlignment()
->getTextRotation() == null ? 1 : 0;
$bIndent = $conditional
->getStyle()
->getAlignment()
->getIndent() == 0 ? 1 : 0;
$bShrinkToFit = $conditional
->getStyle()
->getAlignment()
->getShrinkToFit() == false ? 1 : 0;
if ($bAlignHz == 0 || $bAlignVt == 0 || $bAlignWrapTx == 0 || $bTxRotation == 0 || $bIndent == 0 || $bShrinkToFit == 0) {
$bFormatAlign = 1;
}
else {
$bFormatAlign = 0;
}
// Protection
$bProtLocked = $conditional
->getStyle()
->getProtection()
->getLocked() == null ? 1 : 0;
$bProtHidden = $conditional
->getStyle()
->getProtection()
->getHidden() == null ? 1 : 0;
if ($bProtLocked == 0 || $bProtHidden == 0) {
$bFormatProt = 1;
}
else {
$bFormatProt = 0;
}
// Border
$bBorderLeft = $conditional
->getStyle()
->getBorders()
->getLeft()
->getColor()
->getARGB() == PHPExcel_Style_Color::COLOR_BLACK && $conditional
->getStyle()
->getBorders()
->getLeft()
->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0;
$bBorderRight = $conditional
->getStyle()
->getBorders()
->getRight()
->getColor()
->getARGB() == PHPExcel_Style_Color::COLOR_BLACK && $conditional
->getStyle()
->getBorders()
->getRight()
->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0;
$bBorderTop = $conditional
->getStyle()
->getBorders()
->getTop()
->getColor()
->getARGB() == PHPExcel_Style_Color::COLOR_BLACK && $conditional
->getStyle()
->getBorders()
->getTop()
->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0;
$bBorderBottom = $conditional
->getStyle()
->getBorders()
->getBottom()
->getColor()
->getARGB() == PHPExcel_Style_Color::COLOR_BLACK && $conditional
->getStyle()
->getBorders()
->getBottom()
->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0;
if ($bBorderLeft == 0 || $bBorderRight == 0 || $bBorderTop == 0 || $bBorderBottom == 0) {
$bFormatBorder = 1;
}
else {
$bFormatBorder = 0;
}
// Pattern
$bFillStyle = $conditional
->getStyle()
->getFill()
->getFillType() == null ? 0 : 1;
$bFillColor = $conditional
->getStyle()
->getFill()
->getStartColor()
->getARGB() == null ? 0 : 1;
$bFillColorBg = $conditional
->getStyle()
->getFill()
->getEndColor()
->getARGB() == null ? 0 : 1;
if ($bFillStyle == 0 || $bFillColor == 0 || $bFillColorBg == 0) {
$bFormatFill = 1;
}
else {
$bFormatFill = 0;
}
// Font
if ($conditional
->getStyle()
->getFont()
->getName() != null || $conditional
->getStyle()
->getFont()
->getSize() != null || $conditional
->getStyle()
->getFont()
->getBold() != null || $conditional
->getStyle()
->getFont()
->getItalic() != null || $conditional
->getStyle()
->getFont()
->getSuperScript() != null || $conditional
->getStyle()
->getFont()
->getSubScript() != null || $conditional
->getStyle()
->getFont()
->getUnderline() != null || $conditional
->getStyle()
->getFont()
->getStrikethrough() != null || $conditional
->getStyle()
->getFont()
->getColor()
->getARGB() != null) {
$bFormatFont = 1;
}
else {
$bFormatFont = 0;
}
// Alignment
$flags = 0;
$flags |= 1 == $bAlignHz ? 0x1 : 0;
$flags |= 1 == $bAlignVt ? 0x2 : 0;
$flags |= 1 == $bAlignWrapTx ? 0x4 : 0;
$flags |= 1 == $bTxRotation ? 0x8 : 0;
// Justify last line flag
$flags |= 1 == 1 ? 0x10 : 0;
$flags |= 1 == $bIndent ? 0x20 : 0;
$flags |= 1 == $bShrinkToFit ? 0x40 : 0;
// Default
$flags |= 1 == 1 ? 0x80 : 0;
// Protection
$flags |= 1 == $bProtLocked ? 0x100 : 0;
$flags |= 1 == $bProtHidden ? 0x200 : 0;
// Border
$flags |= 1 == $bBorderLeft ? 0x400 : 0;
$flags |= 1 == $bBorderRight ? 0x800 : 0;
$flags |= 1 == $bBorderTop ? 0x1000 : 0;
$flags |= 1 == $bBorderBottom ? 0x2000 : 0;
$flags |= 1 == 1 ? 0x4000 : 0;
// Top left to Bottom right border
$flags |= 1 == 1 ? 0x8000 : 0;
// Bottom left to Top right border
// Pattern
$flags |= 1 == $bFillStyle ? 0x10000 : 0;
$flags |= 1 == $bFillColor ? 0x20000 : 0;
$flags |= 1 == $bFillColorBg ? 0x40000 : 0;
$flags |= 1 == 1 ? 0x380000 : 0;
// Font
$flags |= 1 == $bFormatFont ? 0x4000000 : 0;
// Alignment :
$flags |= 1 == $bFormatAlign ? 0x8000000 : 0;
// Border
$flags |= 1 == $bFormatBorder ? 0x10000000 : 0;
// Pattern
$flags |= 1 == $bFormatFill ? 0x20000000 : 0;
// Protection
$flags |= 1 == $bFormatProt ? 0x40000000 : 0;
// Text direction
$flags |= 1 == 0 ? 0x80000000 : 0;
// Data Blocks
if ($bFormatFont == 1) {
// Font Name
if ($conditional
->getStyle()
->getFont()
->getName() == null) {
$dataBlockFont = pack('VVVVVVVV', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0);
$dataBlockFont .= pack('VVVVVVVV', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0);
}
else {
$dataBlockFont = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($conditional
->getStyle()
->getFont()
->getName());
}
// Font Size
if ($conditional
->getStyle()
->getFont()
->getSize() == null) {
$dataBlockFont .= pack('V', 20 * 11);
}
else {
$dataBlockFont .= pack('V', 20 * $conditional
->getStyle()
->getFont()
->getSize());
}
// Font Options
$dataBlockFont .= pack('V', 0);
// Font weight
if ($conditional
->getStyle()
->getFont()
->getBold() == true) {
$dataBlockFont .= pack('v', 0x2bc);
}
else {
$dataBlockFont .= pack('v', 0x190);
}
// Escapement type
if ($conditional
->getStyle()
->getFont()
->getSubScript() == true) {
$dataBlockFont .= pack('v', 0x2);
$fontEscapement = 0;
}
else {
if ($conditional
->getStyle()
->getFont()
->getSuperScript() == true) {
$dataBlockFont .= pack('v', 0x1);
$fontEscapement = 0;
}
else {
$dataBlockFont .= pack('v', 0x0);
$fontEscapement = 1;
}
}
// Underline type
switch ($conditional
->getStyle()
->getFont()
->getUnderline()) {
case PHPExcel_Style_Font::UNDERLINE_NONE:
$dataBlockFont .= pack('C', 0x0);
$fontUnderline = 0;
break;
case PHPExcel_Style_Font::UNDERLINE_DOUBLE:
$dataBlockFont .= pack('C', 0x2);
$fontUnderline = 0;
break;
case PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING:
$dataBlockFont .= pack('C', 0x22);
$fontUnderline = 0;
break;
case PHPExcel_Style_Font::UNDERLINE_SINGLE:
$dataBlockFont .= pack('C', 0x1);
$fontUnderline = 0;
break;
case PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING:
$dataBlockFont .= pack('C', 0x21);
$fontUnderline = 0;
break;
default:
$dataBlockFont .= pack('C', 0x0);
$fontUnderline = 1;
break;
}
// Not used (3)
$dataBlockFont .= pack('vC', 0x0, 0x0);
// Font color index
switch ($conditional
->getStyle()
->getFont()
->getColor()
->getRGB()) {
case '000000':
$colorIdx = 0x8;
break;
case 'FFFFFF':
$colorIdx = 0x9;
break;
case 'FF0000':
$colorIdx = 0xa;
break;
case '00FF00':
$colorIdx = 0xb;
break;
case '0000FF':
$colorIdx = 0xc;
break;
case 'FFFF00':
$colorIdx = 0xd;
break;
case 'FF00FF':
$colorIdx = 0xe;
break;
case '00FFFF':
$colorIdx = 0xf;
break;
case '800000':
$colorIdx = 0x10;
break;
case '008000':
$colorIdx = 0x11;
break;
case '000080':
$colorIdx = 0x12;
break;
case '808000':
$colorIdx = 0x13;
break;
case '800080':
$colorIdx = 0x14;
break;
case '008080':
$colorIdx = 0x15;
break;
case 'C0C0C0':
$colorIdx = 0x16;
break;
case '808080':
$colorIdx = 0x17;
break;
case '9999FF':
$colorIdx = 0x18;
break;
case '993366':
$colorIdx = 0x19;
break;
case 'FFFFCC':
$colorIdx = 0x1a;
break;
case 'CCFFFF':
$colorIdx = 0x1b;
break;
case '660066':
$colorIdx = 0x1c;
break;
case 'FF8080':
$colorIdx = 0x1d;
break;
case '0066CC':
$colorIdx = 0x1e;
break;
case 'CCCCFF':
$colorIdx = 0x1f;
break;
case '000080':
$colorIdx = 0x20;
break;
case 'FF00FF':
$colorIdx = 0x21;
break;
case 'FFFF00':
$colorIdx = 0x22;
break;
case '00FFFF':
$colorIdx = 0x23;
break;
case '800080':
$colorIdx = 0x24;
break;
case '800000':
$colorIdx = 0x25;
break;
case '008080':
$colorIdx = 0x26;
break;
case '0000FF':
$colorIdx = 0x27;
break;
case '00CCFF':
$colorIdx = 0x28;
break;
case 'CCFFFF':
$colorIdx = 0x29;
break;
case 'CCFFCC':
$colorIdx = 0x2a;
break;
case 'FFFF99':
$colorIdx = 0x2b;
break;
case '99CCFF':
$colorIdx = 0x2c;
break;
case 'FF99CC':
$colorIdx = 0x2d;
break;
case 'CC99FF':
$colorIdx = 0x2e;
break;
case 'FFCC99':
$colorIdx = 0x2f;
break;
case '3366FF':
$colorIdx = 0x30;
break;
case '33CCCC':
$colorIdx = 0x31;
break;
case '99CC00':
$colorIdx = 0x32;
break;
case 'FFCC00':
$colorIdx = 0x33;
break;
case 'FF9900':
$colorIdx = 0x34;
break;
case 'FF6600':
$colorIdx = 0x35;
break;
case '666699':
$colorIdx = 0x36;
break;
case '969696':
$colorIdx = 0x37;
break;
case '003366':
$colorIdx = 0x38;
break;
case '339966':
$colorIdx = 0x39;
break;
case '003300':
$colorIdx = 0x3a;
break;
case '333300':
$colorIdx = 0x3b;
break;
case '993300':
$colorIdx = 0x3c;
break;
case '993366':
$colorIdx = 0x3d;
break;
case '333399':
$colorIdx = 0x3e;
break;
case '333333':
$colorIdx = 0x3f;
break;
default:
$colorIdx = 0x0;
break;
}
$dataBlockFont .= pack('V', $colorIdx);
// Not used (4)
$dataBlockFont .= pack('V', 0x0);
// Options flags for modified font attributes
$optionsFlags = 0;
$optionsFlagsBold = $conditional
->getStyle()
->getFont()
->getBold() == null ? 1 : 0;
$optionsFlags |= 1 == $optionsFlagsBold ? 0x2 : 0;
$optionsFlags |= 1 == 1 ? 0x8 : 0;
$optionsFlags |= 1 == 1 ? 0x10 : 0;
$optionsFlags |= 1 == 0 ? 0x20 : 0;
$optionsFlags |= 1 == 1 ? 0x80 : 0;
$dataBlockFont .= pack('V', $optionsFlags);
// Escapement type
$dataBlockFont .= pack('V', $fontEscapement);
// Underline type
$dataBlockFont .= pack('V', $fontUnderline);
// Always
$dataBlockFont .= pack('V', 0x0);
// Always
$dataBlockFont .= pack('V', 0x0);
// Not used (8)
$dataBlockFont .= pack('VV', 0x0, 0x0);
// Always
$dataBlockFont .= pack('v', 0x1);
}
if ($bFormatAlign == 1) {
$blockAlign = 0;
// Alignment and text break
switch ($conditional
->getStyle()
->getAlignment()
->getHorizontal()) {
case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL:
$blockAlign = 0;
break;
case PHPExcel_Style_Alignment::HORIZONTAL_LEFT:
$blockAlign = 1;
break;
case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT:
$blockAlign = 3;
break;
case PHPExcel_Style_Alignment::HORIZONTAL_CENTER:
$blockAlign = 2;
break;
case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS:
$blockAlign = 6;
break;
case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY:
$blockAlign = 5;
break;
}
if ($conditional
->getStyle()
->getAlignment()
->getWrapText() == true) {
$blockAlign |= 1 << 3;
}
else {
$blockAlign |= 0 << 3;
}
switch ($conditional
->getStyle()
->getAlignment()
->getVertical()) {
case PHPExcel_Style_Alignment::VERTICAL_BOTTOM:
$blockAlign = 2 << 4;
break;
case PHPExcel_Style_Alignment::VERTICAL_TOP:
$blockAlign = 0 << 4;
break;
case PHPExcel_Style_Alignment::VERTICAL_CENTER:
$blockAlign = 1 << 4;
break;
case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY:
$blockAlign = 3 << 4;
break;
}
$blockAlign |= 0 << 7;
// Text rotation angle
$blockRotation = $conditional
->getStyle()
->getAlignment()
->getTextRotation();
// Indentation
$blockIndent = $conditional
->getStyle()
->getAlignment()
->getIndent();
if ($conditional
->getStyle()
->getAlignment()
->getShrinkToFit() == true) {
$blockIndent |= 1 << 4;
}
else {
$blockIndent |= 0 << 4;
}
$blockIndent |= 0 << 6;
// Relative indentation
$blockIndentRelative = 255;
$dataBlockAlign = pack('CCvvv', $blockAlign, $blockRotation, $blockIndent, $blockIndentRelative, 0x0);
}
if ($bFormatBorder == 1) {
$blockLineStyle = 0;
switch ($conditional
->getStyle()
->getBorders()
->getLeft()
->getBorderStyle()) {
case PHPExcel_Style_Border::BORDER_NONE:
$blockLineStyle |= 0x0;
break;
case PHPExcel_Style_Border::BORDER_THIN:
$blockLineStyle |= 0x1;
break;
case PHPExcel_Style_Border::BORDER_MEDIUM:
$blockLineStyle |= 0x2;
break;
case PHPExcel_Style_Border::BORDER_DASHED:
$blockLineStyle |= 0x3;
break;
case PHPExcel_Style_Border::BORDER_DOTTED:
$blockLineStyle |= 0x4;
break;
case PHPExcel_Style_Border::BORDER_THICK:
$blockLineStyle |= 0x5;
break;
case PHPExcel_Style_Border::BORDER_DOUBLE:
$blockLineStyle |= 0x6;
break;
case PHPExcel_Style_Border::BORDER_HAIR:
$blockLineStyle |= 0x7;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHED:
$blockLineStyle |= 0x8;
break;
case PHPExcel_Style_Border::BORDER_DASHDOT:
$blockLineStyle |= 0x9;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT:
$blockLineStyle |= 0xa;
break;
case PHPExcel_Style_Border::BORDER_DASHDOTDOT:
$blockLineStyle |= 0xb;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT:
$blockLineStyle |= 0xc;
break;
case PHPExcel_Style_Border::BORDER_SLANTDASHDOT:
$blockLineStyle |= 0xd;
break;
}
switch ($conditional
->getStyle()
->getBorders()
->getRight()
->getBorderStyle()) {
case PHPExcel_Style_Border::BORDER_NONE:
$blockLineStyle |= 0x0 << 4;
break;
case PHPExcel_Style_Border::BORDER_THIN:
$blockLineStyle |= 0x1 << 4;
break;
case PHPExcel_Style_Border::BORDER_MEDIUM:
$blockLineStyle |= 0x2 << 4;
break;
case PHPExcel_Style_Border::BORDER_DASHED:
$blockLineStyle |= 0x3 << 4;
break;
case PHPExcel_Style_Border::BORDER_DOTTED:
$blockLineStyle |= 0x4 << 4;
break;
case PHPExcel_Style_Border::BORDER_THICK:
$blockLineStyle |= 0x5 << 4;
break;
case PHPExcel_Style_Border::BORDER_DOUBLE:
$blockLineStyle |= 0x6 << 4;
break;
case PHPExcel_Style_Border::BORDER_HAIR:
$blockLineStyle |= 0x7 << 4;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHED:
$blockLineStyle |= 0x8 << 4;
break;
case PHPExcel_Style_Border::BORDER_DASHDOT:
$blockLineStyle |= 0x9 << 4;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT:
$blockLineStyle |= 0xa << 4;
break;
case PHPExcel_Style_Border::BORDER_DASHDOTDOT:
$blockLineStyle |= 0xb << 4;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT:
$blockLineStyle |= 0xc << 4;
break;
case PHPExcel_Style_Border::BORDER_SLANTDASHDOT:
$blockLineStyle |= 0xd << 4;
break;
}
switch ($conditional
->getStyle()
->getBorders()
->getTop()
->getBorderStyle()) {
case PHPExcel_Style_Border::BORDER_NONE:
$blockLineStyle |= 0x0 << 8;
break;
case PHPExcel_Style_Border::BORDER_THIN:
$blockLineStyle |= 0x1 << 8;
break;
case PHPExcel_Style_Border::BORDER_MEDIUM:
$blockLineStyle |= 0x2 << 8;
break;
case PHPExcel_Style_Border::BORDER_DASHED:
$blockLineStyle |= 0x3 << 8;
break;
case PHPExcel_Style_Border::BORDER_DOTTED:
$blockLineStyle |= 0x4 << 8;
break;
case PHPExcel_Style_Border::BORDER_THICK:
$blockLineStyle |= 0x5 << 8;
break;
case PHPExcel_Style_Border::BORDER_DOUBLE:
$blockLineStyle |= 0x6 << 8;
break;
case PHPExcel_Style_Border::BORDER_HAIR:
$blockLineStyle |= 0x7 << 8;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHED:
$blockLineStyle |= 0x8 << 8;
break;
case PHPExcel_Style_Border::BORDER_DASHDOT:
$blockLineStyle |= 0x9 << 8;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT:
$blockLineStyle |= 0xa << 8;
break;
case PHPExcel_Style_Border::BORDER_DASHDOTDOT:
$blockLineStyle |= 0xb << 8;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT:
$blockLineStyle |= 0xc << 8;
break;
case PHPExcel_Style_Border::BORDER_SLANTDASHDOT:
$blockLineStyle |= 0xd << 8;
break;
}
switch ($conditional
->getStyle()
->getBorders()
->getBottom()
->getBorderStyle()) {
case PHPExcel_Style_Border::BORDER_NONE:
$blockLineStyle |= 0x0 << 12;
break;
case PHPExcel_Style_Border::BORDER_THIN:
$blockLineStyle |= 0x1 << 12;
break;
case PHPExcel_Style_Border::BORDER_MEDIUM:
$blockLineStyle |= 0x2 << 12;
break;
case PHPExcel_Style_Border::BORDER_DASHED:
$blockLineStyle |= 0x3 << 12;
break;
case PHPExcel_Style_Border::BORDER_DOTTED:
$blockLineStyle |= 0x4 << 12;
break;
case PHPExcel_Style_Border::BORDER_THICK:
$blockLineStyle |= 0x5 << 12;
break;
case PHPExcel_Style_Border::BORDER_DOUBLE:
$blockLineStyle |= 0x6 << 12;
break;
case PHPExcel_Style_Border::BORDER_HAIR:
$blockLineStyle |= 0x7 << 12;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHED:
$blockLineStyle |= 0x8 << 12;
break;
case PHPExcel_Style_Border::BORDER_DASHDOT:
$blockLineStyle |= 0x9 << 12;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT:
$blockLineStyle |= 0xa << 12;
break;
case PHPExcel_Style_Border::BORDER_DASHDOTDOT:
$blockLineStyle |= 0xb << 12;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT:
$blockLineStyle |= 0xc << 12;
break;
case PHPExcel_Style_Border::BORDER_SLANTDASHDOT:
$blockLineStyle |= 0xd << 12;
break;
}
//@todo _writeCFRule() => $blockLineStyle => Index Color for left line
//@todo _writeCFRule() => $blockLineStyle => Index Color for right line
//@todo _writeCFRule() => $blockLineStyle => Top-left to bottom-right on/off
//@todo _writeCFRule() => $blockLineStyle => Bottom-left to top-right on/off
$blockColor = 0;
//@todo _writeCFRule() => $blockColor => Index Color for top line
//@todo _writeCFRule() => $blockColor => Index Color for bottom line
//@todo _writeCFRule() => $blockColor => Index Color for diagonal line
switch ($conditional
->getStyle()
->getBorders()
->getDiagonal()
->getBorderStyle()) {
case PHPExcel_Style_Border::BORDER_NONE:
$blockColor |= 0x0 << 21;
break;
case PHPExcel_Style_Border::BORDER_THIN:
$blockColor |= 0x1 << 21;
break;
case PHPExcel_Style_Border::BORDER_MEDIUM:
$blockColor |= 0x2 << 21;
break;
case PHPExcel_Style_Border::BORDER_DASHED:
$blockColor |= 0x3 << 21;
break;
case PHPExcel_Style_Border::BORDER_DOTTED:
$blockColor |= 0x4 << 21;
break;
case PHPExcel_Style_Border::BORDER_THICK:
$blockColor |= 0x5 << 21;
break;
case PHPExcel_Style_Border::BORDER_DOUBLE:
$blockColor |= 0x6 << 21;
break;
case PHPExcel_Style_Border::BORDER_HAIR:
$blockColor |= 0x7 << 21;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHED:
$blockColor |= 0x8 << 21;
break;
case PHPExcel_Style_Border::BORDER_DASHDOT:
$blockColor |= 0x9 << 21;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT:
$blockColor |= 0xa << 21;
break;
case PHPExcel_Style_Border::BORDER_DASHDOTDOT:
$blockColor |= 0xb << 21;
break;
case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT:
$blockColor |= 0xc << 21;
break;
case PHPExcel_Style_Border::BORDER_SLANTDASHDOT:
$blockColor |= 0xd << 21;
break;
}
$dataBlockBorder = pack('vv', $blockLineStyle, $blockColor);
}
if ($bFormatFill == 1) {
// Fill Patern Style
$blockFillPatternStyle = 0;
switch ($conditional
->getStyle()
->getFill()
->getFillType()) {
case PHPExcel_Style_Fill::FILL_NONE:
$blockFillPatternStyle = 0x0;
break;
case PHPExcel_Style_Fill::FILL_SOLID:
$blockFillPatternStyle = 0x1;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY:
$blockFillPatternStyle = 0x2;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY:
$blockFillPatternStyle = 0x3;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY:
$blockFillPatternStyle = 0x4;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL:
$blockFillPatternStyle = 0x5;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL:
$blockFillPatternStyle = 0x6;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN:
$blockFillPatternStyle = 0x7;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKUP:
$blockFillPatternStyle = 0x8;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID:
$blockFillPatternStyle = 0x9;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS:
$blockFillPatternStyle = 0xa;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL:
$blockFillPatternStyle = 0xb;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL:
$blockFillPatternStyle = 0xc;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN:
$blockFillPatternStyle = 0xd;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP:
$blockFillPatternStyle = 0xe;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID:
$blockFillPatternStyle = 0xf;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS:
$blockFillPatternStyle = 0x10;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_GRAY125:
$blockFillPatternStyle = 0x11;
break;
case PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625:
$blockFillPatternStyle = 0x12;
break;
case PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR:
$blockFillPatternStyle = 0x0;
break;
// does not exist in BIFF8
case PHPExcel_Style_Fill::FILL_GRADIENT_PATH:
$blockFillPatternStyle = 0x0;
break;
// does not exist in BIFF8
default:
$blockFillPatternStyle = 0x0;
break;
}
// Color
switch ($conditional
->getStyle()
->getFill()
->getStartColor()
->getRGB()) {
case '000000':
$colorIdxBg = 0x8;
break;
case 'FFFFFF':
$colorIdxBg = 0x9;
break;
case 'FF0000':
$colorIdxBg = 0xa;
break;
case '00FF00':
$colorIdxBg = 0xb;
break;
case '0000FF':
$colorIdxBg = 0xc;
break;
case 'FFFF00':
$colorIdxBg = 0xd;
break;
case 'FF00FF':
$colorIdxBg = 0xe;
break;
case '00FFFF':
$colorIdxBg = 0xf;
break;
case '800000':
$colorIdxBg = 0x10;
break;
case '008000':
$colorIdxBg = 0x11;
break;
case '000080':
$colorIdxBg = 0x12;
break;
case '808000':
$colorIdxBg = 0x13;
break;
case '800080':
$colorIdxBg = 0x14;
break;
case '008080':
$colorIdxBg = 0x15;
break;
case 'C0C0C0':
$colorIdxBg = 0x16;
break;
case '808080':
$colorIdxBg = 0x17;
break;
case '9999FF':
$colorIdxBg = 0x18;
break;
case '993366':
$colorIdxBg = 0x19;
break;
case 'FFFFCC':
$colorIdxBg = 0x1a;
break;
case 'CCFFFF':
$colorIdxBg = 0x1b;
break;
case '660066':
$colorIdxBg = 0x1c;
break;
case 'FF8080':
$colorIdxBg = 0x1d;
break;
case '0066CC':
$colorIdxBg = 0x1e;
break;
case 'CCCCFF':
$colorIdxBg = 0x1f;
break;
case '000080':
$colorIdxBg = 0x20;
break;
case 'FF00FF':
$colorIdxBg = 0x21;
break;
case 'FFFF00':
$colorIdxBg = 0x22;
break;
case '00FFFF':
$colorIdxBg = 0x23;
break;
case '800080':
$colorIdxBg = 0x24;
break;
case '800000':
$colorIdxBg = 0x25;
break;
case '008080':
$colorIdxBg = 0x26;
break;
case '0000FF':
$colorIdxBg = 0x27;
break;
case '00CCFF':
$colorIdxBg = 0x28;
break;
case 'CCFFFF':
$colorIdxBg = 0x29;
break;
case 'CCFFCC':
$colorIdxBg = 0x2a;
break;
case 'FFFF99':
$colorIdxBg = 0x2b;
break;
case '99CCFF':
$colorIdxBg = 0x2c;
break;
case 'FF99CC':
$colorIdxBg = 0x2d;
break;
case 'CC99FF':
$colorIdxBg = 0x2e;
break;
case 'FFCC99':
$colorIdxBg = 0x2f;
break;
case '3366FF':
$colorIdxBg = 0x30;
break;
case '33CCCC':
$colorIdxBg = 0x31;
break;
case '99CC00':
$colorIdxBg = 0x32;
break;
case 'FFCC00':
$colorIdxBg = 0x33;
break;
case 'FF9900':
$colorIdxBg = 0x34;
break;
case 'FF6600':
$colorIdxBg = 0x35;
break;
case '666699':
$colorIdxBg = 0x36;
break;
case '969696':
$colorIdxBg = 0x37;
break;
case '003366':
$colorIdxBg = 0x38;
break;
case '339966':
$colorIdxBg = 0x39;
break;
case '003300':
$colorIdxBg = 0x3a;
break;
case '333300':
$colorIdxBg = 0x3b;
break;
case '993300':
$colorIdxBg = 0x3c;
break;
case '993366':
$colorIdxBg = 0x3d;
break;
case '333399':
$colorIdxBg = 0x3e;
break;
case '333333':
$colorIdxBg = 0x3f;
break;
default:
$colorIdxBg = 0x41;
break;
}
// Fg Color
switch ($conditional
->getStyle()
->getFill()
->getEndColor()
->getRGB()) {
case '000000':
$colorIdxFg = 0x8;
break;
case 'FFFFFF':
$colorIdxFg = 0x9;
break;
case 'FF0000':
$colorIdxFg = 0xa;
break;
case '00FF00':
$colorIdxFg = 0xb;
break;
case '0000FF':
$colorIdxFg = 0xc;
break;
case 'FFFF00':
$colorIdxFg = 0xd;
break;
case 'FF00FF':
$colorIdxFg = 0xe;
break;
case '00FFFF':
$colorIdxFg = 0xf;
break;
case '800000':
$colorIdxFg = 0x10;
break;
case '008000':
$colorIdxFg = 0x11;
break;
case '000080':
$colorIdxFg = 0x12;
break;
case '808000':
$colorIdxFg = 0x13;
break;
case '800080':
$colorIdxFg = 0x14;
break;
case '008080':
$colorIdxFg = 0x15;
break;
case 'C0C0C0':
$colorIdxFg = 0x16;
break;
case '808080':
$colorIdxFg = 0x17;
break;
case '9999FF':
$colorIdxFg = 0x18;
break;
case '993366':
$colorIdxFg = 0x19;
break;
case 'FFFFCC':
$colorIdxFg = 0x1a;
break;
case 'CCFFFF':
$colorIdxFg = 0x1b;
break;
case '660066':
$colorIdxFg = 0x1c;
break;
case 'FF8080':
$colorIdxFg = 0x1d;
break;
case '0066CC':
$colorIdxFg = 0x1e;
break;
case 'CCCCFF':
$colorIdxFg = 0x1f;
break;
case '000080':
$colorIdxFg = 0x20;
break;
case 'FF00FF':
$colorIdxFg = 0x21;
break;
case 'FFFF00':
$colorIdxFg = 0x22;
break;
case '00FFFF':
$colorIdxFg = 0x23;
break;
case '800080':
$colorIdxFg = 0x24;
break;
case '800000':
$colorIdxFg = 0x25;
break;
case '008080':
$colorIdxFg = 0x26;
break;
case '0000FF':
$colorIdxFg = 0x27;
break;
case '00CCFF':
$colorIdxFg = 0x28;
break;
case 'CCFFFF':
$colorIdxFg = 0x29;
break;
case 'CCFFCC':
$colorIdxFg = 0x2a;
break;
case 'FFFF99':
$colorIdxFg = 0x2b;
break;
case '99CCFF':
$colorIdxFg = 0x2c;
break;
case 'FF99CC':
$colorIdxFg = 0x2d;
break;
case 'CC99FF':
$colorIdxFg = 0x2e;
break;
case 'FFCC99':
$colorIdxFg = 0x2f;
break;
case '3366FF':
$colorIdxFg = 0x30;
break;
case '33CCCC':
$colorIdxFg = 0x31;
break;
case '99CC00':
$colorIdxFg = 0x32;
break;
case 'FFCC00':
$colorIdxFg = 0x33;
break;
case 'FF9900':
$colorIdxFg = 0x34;
break;
case 'FF6600':
$colorIdxFg = 0x35;
break;
case '666699':
$colorIdxFg = 0x36;
break;
case '969696':
$colorIdxFg = 0x37;
break;
case '003366':
$colorIdxFg = 0x38;
break;
case '339966':
$colorIdxFg = 0x39;
break;
case '003300':
$colorIdxFg = 0x3a;
break;
case '333300':
$colorIdxFg = 0x3b;
break;
case '993300':
$colorIdxFg = 0x3c;
break;
case '993366':
$colorIdxFg = 0x3d;
break;
case '333399':
$colorIdxFg = 0x3e;
break;
case '333333':
$colorIdxFg = 0x3f;
break;
default:
$colorIdxFg = 0x40;
break;
}
$dataBlockFill = pack('v', $blockFillPatternStyle);
$dataBlockFill .= pack('v', $colorIdxFg | $colorIdxBg << 7);
}
if ($bFormatProt == 1) {
$dataBlockProtection = 0;
if ($conditional
->getStyle()
->getProtection()
->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) {
$dataBlockProtection = 1;
}
if ($conditional
->getStyle()
->getProtection()
->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) {
$dataBlockProtection = 1 << 1;
}
}
$data = pack('CCvvVv', $type, $operatorType, $szValue1, $szValue2, $flags, 0x0);
if ($bFormatFont == 1) {
// Block Formatting : OK
$data .= $dataBlockFont;
}
if ($bFormatAlign == 1) {
$data .= $dataBlockAlign;
}
if ($bFormatBorder == 1) {
$data .= $dataBlockBorder;
}
if ($bFormatFill == 1) {
// Block Formatting : OK
$data .= $dataBlockFill;
}
if ($bFormatProt == 1) {
$data .= $dataBlockProtection;
}
if (!is_null($operand1)) {
$data .= $operand1;
}
if (!is_null($operand2)) {
$data .= $operand2;
}
$header = pack('vv', $record, strlen($data));
$this
->_append($header . $data);
}