/** * Write Rich Text * * @param \PHPExcel\Shared\XMLWriter $objWriter XML Writer * @param string|\PHPExcel\RichText $pRichText text string or Rich text * @param string $prefix Optional Namespace prefix * @throws \PHPExcel\Writer\Exception */ public function writeRichTextForCharts(\PHPExcel\Shared\XMLWriter $objWriter = null, $pRichText = null, $prefix = null) { if (!$pRichText instanceof \PHPExcel\RichText) { $textRun = $pRichText; $pRichText = new \PHPExcel\RichText(); $pRichText->createTextRun($textRun); } if ($prefix !== null) { $prefix .= ':'; } // Loop through rich text elements $elements = $pRichText->getRichTextElements(); foreach ($elements as $element) { // r $objWriter->startElement($prefix . 'r'); // rPr $objWriter->startElement($prefix . 'rPr'); // Bold $objWriter->writeAttribute('b', $element->getFont()->getBold() ? 1 : 0); // Italic $objWriter->writeAttribute('i', $element->getFont()->getItalic() ? 1 : 0); // Underline $underlineType = $element->getFont()->getUnderline(); switch ($underlineType) { case 'single': $underlineType = 'sng'; break; case 'double': $underlineType = 'dbl'; break; } $objWriter->writeAttribute('u', $underlineType); // Strikethrough $objWriter->writeAttribute('strike', $element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike'); // rFont $objWriter->startElement($prefix . 'latin'); $objWriter->writeAttribute('typeface', $element->getFont()->getName()); $objWriter->endElement(); // Superscript / subscript // if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) { // $objWriter->startElement($prefix.'vertAlign'); // if ($element->getFont()->getSuperScript()) { // $objWriter->writeAttribute('val', 'superscript'); // } elseif ($element->getFont()->getSubScript()) { // $objWriter->writeAttribute('val', 'subscript'); // } // $objWriter->endElement(); // } // $objWriter->endElement(); // t $objWriter->startElement($prefix . 't'); // $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains $objWriter->writeRawData(\PHPExcel\Shared\StringHelper::controlCharacterPHP2OOXML($element->getText())); $objWriter->endElement(); $objWriter->endElement(); } }
/** * Write Value Axis * * @param \PHPExcel\Shared\XMLWriter $objWriter XML Writer * @param PHPExcel_Chart_PlotArea $plotArea * @param PHPExcel_Chart_Title $yAxisLabel * @param string $groupType Chart type * @param string $id1 * @param string $id2 * @param boolean $isMultiLevelSeries * * @throws \PHPExcel\Writer\Exception */ private function writeValueAxis($objWriter, PlotArea $plotArea, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines) { $objWriter->startElement('c:valAx'); if ($id2 > 0) { $objWriter->startElement('c:axId'); $objWriter->writeAttribute('val', $id2); $objWriter->endElement(); } $objWriter->startElement('c:scaling'); if (!is_null($xAxis->getAxisOptionsProperty('maximum'))) { $objWriter->startElement('c:max'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('maximum')); $objWriter->endElement(); } if (!is_null($xAxis->getAxisOptionsProperty('minimum'))) { $objWriter->startElement('c:min'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minimum')); $objWriter->endElement(); } $objWriter->startElement('c:orientation'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('orientation')); $objWriter->endElement(); $objWriter->endElement(); $objWriter->startElement('c:delete'); $objWriter->writeAttribute('val', 0); $objWriter->endElement(); $objWriter->startElement('c:axPos'); $objWriter->writeAttribute('val', "l"); $objWriter->endElement(); $objWriter->startElement('c:majorGridlines'); $objWriter->startElement('c:spPr'); if (!is_null($majorGridlines->getLineColorProperty('value'))) { $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', $majorGridlines->getLineStyleProperty('width')); $objWriter->startElement('a:solidFill'); $objWriter->startElement("a:{$majorGridlines->getLineColorProperty('type')}"); $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('alpha')); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end srgbClr $objWriter->endElement(); //end solidFill $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', $majorGridlines->getLineStyleProperty('dash')); $objWriter->endElement(); if ($majorGridlines->getLineStyleProperty('join') == 'miter') { $objWriter->startElement('a:miter'); $objWriter->writeAttribute('lim', '800000'); $objWriter->endElement(); } else { $objWriter->startElement('a:bevel'); $objWriter->endElement(); } if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { $objWriter->startElement('a:headEnd'); $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('head', 'w')); $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('head', 'len')); $objWriter->endElement(); } if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { $objWriter->startElement('a:tailEnd'); $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('end', 'w')); $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('end', 'len')); $objWriter->endElement(); } $objWriter->endElement(); //end ln } $objWriter->startElement('a:effectLst'); if (!is_null($majorGridlines->getGlowSize())) { $objWriter->startElement('a:glow'); $objWriter->writeAttribute('rad', $majorGridlines->getGlowSize()); $objWriter->startElement("a:{$majorGridlines->getGlowColor('type')}"); $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('alpha')); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end schemeClr $objWriter->endElement(); //end glow } if (!is_null($majorGridlines->getShadowProperty('presets'))) { $objWriter->startElement("a:{$majorGridlines->getShadowProperty('effect')}"); if (!is_null($majorGridlines->getShadowProperty('blur'))) { $objWriter->writeAttribute('blurRad', $majorGridlines->getShadowProperty('blur')); } if (!is_null($majorGridlines->getShadowProperty('distance'))) { $objWriter->writeAttribute('dist', $majorGridlines->getShadowProperty('distance')); } if (!is_null($majorGridlines->getShadowProperty('direction'))) { $objWriter->writeAttribute('dir', $majorGridlines->getShadowProperty('direction')); } if (!is_null($majorGridlines->getShadowProperty('algn'))) { $objWriter->writeAttribute('algn', $majorGridlines->getShadowProperty('algn')); } if (!is_null($majorGridlines->getShadowProperty(array('size', 'sx')))) { $objWriter->writeAttribute('sx', $majorGridlines->getShadowProperty(array('size', 'sx'))); } if (!is_null($majorGridlines->getShadowProperty(array('size', 'sy')))) { $objWriter->writeAttribute('sy', $majorGridlines->getShadowProperty(array('size', 'sy'))); } if (!is_null($majorGridlines->getShadowProperty(array('size', 'kx')))) { $objWriter->writeAttribute('kx', $majorGridlines->getShadowProperty(array('size', 'kx'))); } if (!is_null($majorGridlines->getShadowProperty('rotWithShape'))) { $objWriter->writeAttribute('rotWithShape', $majorGridlines->getShadowProperty('rotWithShape')); } $objWriter->startElement("a:{$majorGridlines->getShadowProperty(array('color', 'type'))}"); $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'value'))); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'alpha'))); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end color:type $objWriter->endElement(); //end shadow } if (!is_null($majorGridlines->getSoftEdgesSize())) { $objWriter->startElement('a:softEdge'); $objWriter->writeAttribute('rad', $majorGridlines->getSoftEdgesSize()); $objWriter->endElement(); //end softEdge } $objWriter->endElement(); //end effectLst $objWriter->endElement(); //end spPr $objWriter->endElement(); //end majorGridLines if ($minorGridlines->getObjectState()) { $objWriter->startElement('c:minorGridlines'); $objWriter->startElement('c:spPr'); if (!is_null($minorGridlines->getLineColorProperty('value'))) { $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', $minorGridlines->getLineStyleProperty('width')); $objWriter->startElement('a:solidFill'); $objWriter->startElement("a:{$minorGridlines->getLineColorProperty('type')}"); $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('alpha')); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end srgbClr $objWriter->endElement(); //end solidFill $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', $minorGridlines->getLineStyleProperty('dash')); $objWriter->endElement(); if ($minorGridlines->getLineStyleProperty('join') == 'miter') { $objWriter->startElement('a:miter'); $objWriter->writeAttribute('lim', '800000'); $objWriter->endElement(); } else { $objWriter->startElement('a:bevel'); $objWriter->endElement(); } if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { $objWriter->startElement('a:headEnd'); $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('head', 'w')); $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('head', 'len')); $objWriter->endElement(); } if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { $objWriter->startElement('a:tailEnd'); $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('end', 'w')); $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('end', 'len')); $objWriter->endElement(); } $objWriter->endElement(); //end ln } $objWriter->startElement('a:effectLst'); if (!is_null($minorGridlines->getGlowSize())) { $objWriter->startElement('a:glow'); $objWriter->writeAttribute('rad', $minorGridlines->getGlowSize()); $objWriter->startElement("a:{$minorGridlines->getGlowColor('type')}"); $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('alpha')); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end schemeClr $objWriter->endElement(); //end glow } if (!is_null($minorGridlines->getShadowProperty('presets'))) { $objWriter->startElement("a:{$minorGridlines->getShadowProperty('effect')}"); if (!is_null($minorGridlines->getShadowProperty('blur'))) { $objWriter->writeAttribute('blurRad', $minorGridlines->getShadowProperty('blur')); } if (!is_null($minorGridlines->getShadowProperty('distance'))) { $objWriter->writeAttribute('dist', $minorGridlines->getShadowProperty('distance')); } if (!is_null($minorGridlines->getShadowProperty('direction'))) { $objWriter->writeAttribute('dir', $minorGridlines->getShadowProperty('direction')); } if (!is_null($minorGridlines->getShadowProperty('algn'))) { $objWriter->writeAttribute('algn', $minorGridlines->getShadowProperty('algn')); } if (!is_null($minorGridlines->getShadowProperty(array('size', 'sx')))) { $objWriter->writeAttribute('sx', $minorGridlines->getShadowProperty(array('size', 'sx'))); } if (!is_null($minorGridlines->getShadowProperty(array('size', 'sy')))) { $objWriter->writeAttribute('sy', $minorGridlines->getShadowProperty(array('size', 'sy'))); } if (!is_null($minorGridlines->getShadowProperty(array('size', 'kx')))) { $objWriter->writeAttribute('kx', $minorGridlines->getShadowProperty(array('size', 'kx'))); } if (!is_null($minorGridlines->getShadowProperty('rotWithShape'))) { $objWriter->writeAttribute('rotWithShape', $minorGridlines->getShadowProperty('rotWithShape')); } $objWriter->startElement("a:{$minorGridlines->getShadowProperty(array('color', 'type'))}"); $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'value'))); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'alpha'))); $objWriter->endElement(); //end alpha $objWriter->endElement(); //end color:type $objWriter->endElement(); //end shadow } if (!is_null($minorGridlines->getSoftEdgesSize())) { $objWriter->startElement('a:softEdge'); $objWriter->writeAttribute('rad', $minorGridlines->getSoftEdgesSize()); $objWriter->endElement(); //end softEdge } $objWriter->endElement(); //end effectLst $objWriter->endElement(); //end spPr $objWriter->endElement(); //end minorGridLines } if (!is_null($yAxisLabel)) { $objWriter->startElement('c:title'); $objWriter->startElement('c:tx'); $objWriter->startElement('c:rich'); $objWriter->startElement('a:bodyPr'); $objWriter->endElement(); $objWriter->startElement('a:lstStyle'); $objWriter->endElement(); $objWriter->startElement('a:p'); $objWriter->startElement('a:r'); $caption = $yAxisLabel->getCaption(); if (is_array($caption)) { $caption = $caption[0]; } $objWriter->startElement('a:t'); // $objWriter->writeAttribute('xml:space', 'preserve'); $objWriter->writeRawData(\PHPExcel\Shared\StringHelper::controlCharacterPHP2OOXML($caption)); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); if ($groupType !== DataSeries::TYPE_BUBBLECHART) { $layout = $yAxisLabel->getLayout(); $this->writeLayout($layout, $objWriter); } $objWriter->startElement('c:overlay'); $objWriter->writeAttribute('val', 0); $objWriter->endElement(); $objWriter->endElement(); } $objWriter->startElement('c:numFmt'); $objWriter->writeAttribute('formatCode', $xAxis->getAxisNumberFormat()); $objWriter->writeAttribute('sourceLinked', $xAxis->getAxisNumberSourceLinked()); $objWriter->endElement(); $objWriter->startElement('c:majorTickMark'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_tick_mark')); $objWriter->endElement(); $objWriter->startElement('c:minorTickMark'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_tick_mark')); $objWriter->endElement(); $objWriter->startElement('c:tickLblPos'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('axis_labels')); $objWriter->endElement(); $objWriter->startElement('c:spPr'); if (!is_null($xAxis->getFillProperty('value'))) { $objWriter->startElement('a:solidFill'); $objWriter->startElement("a:" . $xAxis->getFillProperty('type')); $objWriter->writeAttribute('val', $xAxis->getFillProperty('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $xAxis->getFillProperty('alpha')); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } $objWriter->startElement('a:ln'); $objWriter->writeAttribute('w', $xAxis->getLineStyleProperty('width')); $objWriter->writeAttribute('cap', $xAxis->getLineStyleProperty('cap')); $objWriter->writeAttribute('cmpd', $xAxis->getLineStyleProperty('compound')); if (!is_null($xAxis->getLineProperty('value'))) { $objWriter->startElement('a:solidFill'); $objWriter->startElement("a:" . $xAxis->getLineProperty('type')); $objWriter->writeAttribute('val', $xAxis->getLineProperty('value')); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $xAxis->getLineProperty('alpha')); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', $xAxis->getLineStyleProperty('dash')); $objWriter->endElement(); if ($xAxis->getLineStyleProperty('join') == 'miter') { $objWriter->startElement('a:miter'); $objWriter->writeAttribute('lim', '800000'); $objWriter->endElement(); } else { $objWriter->startElement('a:bevel'); $objWriter->endElement(); } if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'head', 'type')))) { $objWriter->startElement('a:headEnd'); $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'head', 'type'))); $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('head')); $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('head')); $objWriter->endElement(); } if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'end', 'type')))) { $objWriter->startElement('a:tailEnd'); $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'end', 'type'))); $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('end')); $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('end')); $objWriter->endElement(); } $objWriter->endElement(); $objWriter->startElement('a:effectLst'); if (!is_null($xAxis->getGlowProperty('size'))) { $objWriter->startElement('a:glow'); $objWriter->writeAttribute('rad', $xAxis->getGlowProperty('size')); $objWriter->startElement("a:{$xAxis->getGlowProperty(array('color', 'type'))}"); $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color', 'value'))); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color', 'alpha'))); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } if (!is_null($xAxis->getShadowProperty('presets'))) { $objWriter->startElement("a:{$xAxis->getShadowProperty('effect')}"); if (!is_null($xAxis->getShadowProperty('blur'))) { $objWriter->writeAttribute('blurRad', $xAxis->getShadowProperty('blur')); } if (!is_null($xAxis->getShadowProperty('distance'))) { $objWriter->writeAttribute('dist', $xAxis->getShadowProperty('distance')); } if (!is_null($xAxis->getShadowProperty('direction'))) { $objWriter->writeAttribute('dir', $xAxis->getShadowProperty('direction')); } if (!is_null($xAxis->getShadowProperty('algn'))) { $objWriter->writeAttribute('algn', $xAxis->getShadowProperty('algn')); } if (!is_null($xAxis->getShadowProperty(array('size', 'sx')))) { $objWriter->writeAttribute('sx', $xAxis->getShadowProperty(array('size', 'sx'))); } if (!is_null($xAxis->getShadowProperty(array('size', 'sy')))) { $objWriter->writeAttribute('sy', $xAxis->getShadowProperty(array('size', 'sy'))); } if (!is_null($xAxis->getShadowProperty(array('size', 'kx')))) { $objWriter->writeAttribute('kx', $xAxis->getShadowProperty(array('size', 'kx'))); } if (!is_null($xAxis->getShadowProperty('rotWithShape'))) { $objWriter->writeAttribute('rotWithShape', $xAxis->getShadowProperty('rotWithShape')); } $objWriter->startElement("a:{$xAxis->getShadowProperty(array('color', 'type'))}"); $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color', 'value'))); $objWriter->startElement('a:alpha'); $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color', 'alpha'))); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } if (!is_null($xAxis->getSoftEdgesSize())) { $objWriter->startElement('a:softEdge'); $objWriter->writeAttribute('rad', $xAxis->getSoftEdgesSize()); $objWriter->endElement(); } $objWriter->endElement(); //effectList $objWriter->endElement(); //end spPr if ($id1 > 0) { $objWriter->startElement('c:crossAx'); $objWriter->writeAttribute('val', $id2); $objWriter->endElement(); if (!is_null($xAxis->getAxisOptionsProperty('horizontal_crosses_value'))) { $objWriter->startElement('c:crossesAt'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses_value')); $objWriter->endElement(); } else { $objWriter->startElement('c:crosses'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses')); $objWriter->endElement(); } $objWriter->startElement('c:crossBetween'); $objWriter->writeAttribute('val', "midCat"); $objWriter->endElement(); if (!is_null($xAxis->getAxisOptionsProperty('major_unit'))) { $objWriter->startElement('c:majorUnit'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_unit')); $objWriter->endElement(); } if (!is_null($xAxis->getAxisOptionsProperty('minor_unit'))) { $objWriter->startElement('c:minorUnit'); $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_unit')); $objWriter->endElement(); } } if ($isMultiLevelSeries) { if ($groupType !== DataSeries::TYPE_BUBBLECHART) { $objWriter->startElement('c:noMultiLvlLbl'); $objWriter->writeAttribute('val', 0); $objWriter->endElement(); } } $objWriter->endElement(); }
/** * Write Cell * * @param \PHPExcel\Shared\XMLWriter $objWriter XML Writer * @param \PHPExcel\Worksheet $pSheet Worksheet * @param \PHPExcel\Cell $pCellAddress Cell Address * @param string[] $pStringTable String table * @param string[] $pFlippedStringTable String table (flipped), for faster index searching * @throws \PHPExcel\Writer\Exception */ private function writeCell(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet $pSheet = null, $pCellAddress = null, $pStringTable = null, $pFlippedStringTable = null) { if (is_array($pStringTable) && is_array($pFlippedStringTable)) { // Cell $pCell = $pSheet->getCell($pCellAddress); $objWriter->startElement('c'); $objWriter->writeAttribute('r', $pCellAddress); // Sheet styles if ($pCell->getXfIndex() != '') { $objWriter->writeAttribute('s', $pCell->getXfIndex()); } // If cell value is supplied, write cell value $cellValue = $pCell->getValue(); if (is_object($cellValue) || $cellValue !== '') { // Map type $mappedType = $pCell->getDataType(); // Write data type depending on its type switch (strtolower($mappedType)) { case 'inlinestr': // Inline string // Inline string case 's': // String // String case 'b': // Boolean $objWriter->writeAttribute('t', $mappedType); break; case 'f': // Formula $calculatedValue = $this->getParentWriter()->getPreCalculateFormulas() ? $pCell->getCalculatedValue() : $cellValue; if (is_string($calculatedValue)) { $objWriter->writeAttribute('t', 'str'); } break; case 'e': // Error $objWriter->writeAttribute('t', $mappedType); } // Write data depending on its type switch (strtolower($mappedType)) { case 'inlinestr': // Inline string if (!$cellValue instanceof \PHPExcel\RichText) { $objWriter->writeElement('t', \PHPExcel\Shared\StringHelper::controlCharacterPHP2OOXML(htmlspecialchars($cellValue))); } elseif ($cellValue instanceof \PHPExcel\RichText) { $objWriter->startElement('is'); $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $cellValue); $objWriter->endElement(); } break; case 's': // String if (!$cellValue instanceof \PHPExcel\RichText) { if (isset($pFlippedStringTable[$cellValue])) { $objWriter->writeElement('v', $pFlippedStringTable[$cellValue]); } } elseif ($cellValue instanceof \PHPExcel\RichText) { $objWriter->writeElement('v', $pFlippedStringTable[$cellValue->getHashCode()]); } break; case 'f': // Formula $attributes = $pCell->getFormulaAttributes(); if ($attributes['t'] == 'array') { $objWriter->startElement('f'); $objWriter->writeAttribute('t', 'array'); $objWriter->writeAttribute('ref', $pCellAddress); $objWriter->writeAttribute('aca', '1'); $objWriter->writeAttribute('ca', '1'); $objWriter->text(substr($cellValue, 1)); $objWriter->endElement(); } else { $objWriter->writeElement('f', substr($cellValue, 1)); } if ($this->getParentWriter()->getOffice2003Compatibility() === false) { if ($this->getParentWriter()->getPreCalculateFormulas()) { // $calculatedValue = $pCell->getCalculatedValue(); if (!is_array($calculatedValue) && substr($calculatedValue, 0, 1) != '#') { $objWriter->writeElement('v', \PHPExcel\Shared\StringHelper::formatNumber($calculatedValue)); } else { $objWriter->writeElement('v', '0'); } } else { $objWriter->writeElement('v', '0'); } } break; case 'n': // Numeric // force point as decimal separator in case current locale uses comma $objWriter->writeElement('v', str_replace(',', '.', $cellValue)); break; case 'b': // Boolean $objWriter->writeElement('v', $cellValue ? '1' : '0'); break; case 'e': // Error if (substr($cellValue, 0, 1) == '=') { $objWriter->writeElement('f', substr($cellValue, 1)); $objWriter->writeElement('v', substr($cellValue, 1)); } else { $objWriter->writeElement('v', $cellValue); } break; } } $objWriter->endElement(); } else { throw new \PHPExcel\Writer\Exception("Invalid parameters passed."); } }