class PHPExcel_Writer_Excel2007_StringTable in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel2007/StringTable.php \PHPExcel_Writer_Excel2007_StringTable
PHPExcel_Writer_Excel2007_StringTable
@category PHPExcel @package PHPExcel_Writer_Excel2007 @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
Hierarchy
Expanded class hierarchy of PHPExcel_Writer_Excel2007_StringTable
1 string reference to 'PHPExcel_Writer_Excel2007_StringTable'
- PHPExcel_Writer_Excel2007::__construct in vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel2007.php - Create a new PHPExcel_Writer_Excel2007
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel2007/ StringTable.php, line 36
View source
class PHPExcel_Writer_Excel2007_StringTable extends PHPExcel_Writer_Excel2007_WriterPart {
/**
* Create worksheet stringtable
*
* @param PHPExcel_Worksheet $pSheet Worksheet
* @param string[] $pExistingTable Existing table to eventually merge with
* @return string[] String table for worksheet
* @throws PHPExcel_Writer_Exception
*/
public function createStringTable($pSheet = null, $pExistingTable = null) {
if ($pSheet !== NULL) {
// Create string lookup table
$aStringTable = array();
$cellCollection = null;
$aFlippedStringTable = null;
// For faster lookup
// Is an existing table given?
if ($pExistingTable !== NULL && is_array($pExistingTable)) {
$aStringTable = $pExistingTable;
}
// Fill index array
$aFlippedStringTable = $this
->flipStringTable($aStringTable);
// Loop through cells
foreach ($pSheet
->getCellCollection() as $cellID) {
$cell = $pSheet
->getCell($cellID);
$cellValue = $cell
->getValue();
if (!is_object($cellValue) && $cellValue !== NULL && $cellValue !== '' && !isset($aFlippedStringTable[$cellValue]) && ($cell
->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell
->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell
->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) {
$aStringTable[] = $cellValue;
$aFlippedStringTable[$cellValue] = true;
}
elseif ($cellValue instanceof PHPExcel_RichText && $cellValue !== NULL && !isset($aFlippedStringTable[$cellValue
->getHashCode()])) {
$aStringTable[] = $cellValue;
$aFlippedStringTable[$cellValue
->getHashCode()] = true;
}
}
// Return
return $aStringTable;
}
else {
throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed.");
}
}
/**
* Write string table to XML format
*
* @param string[] $pStringTable
* @return string XML Output
* @throws PHPExcel_Writer_Exception
*/
public function writeStringTable($pStringTable = null) {
if ($pStringTable !== NULL) {
// Create XML writer
$objWriter = null;
if ($this
->getParentWriter()
->getUseDiskCaching()) {
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this
->getParentWriter()
->getDiskCachingDirectory());
}
else {
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header
$objWriter
->startDocument('1.0', 'UTF-8', 'yes');
// String table
$objWriter
->startElement('sst');
$objWriter
->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main');
$objWriter
->writeAttribute('uniqueCount', count($pStringTable));
// Loop through string table
foreach ($pStringTable as $textElement) {
$objWriter
->startElement('si');
if (!$textElement instanceof PHPExcel_RichText) {
$textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML($textElement);
$objWriter
->startElement('t');
if ($textToWrite !== trim($textToWrite)) {
$objWriter
->writeAttribute('xml:space', 'preserve');
}
$objWriter
->writeRawData($textToWrite);
$objWriter
->endElement();
}
else {
if ($textElement instanceof PHPExcel_RichText) {
$this
->writeRichText($objWriter, $textElement);
}
}
$objWriter
->endElement();
}
$objWriter
->endElement();
// Return
return $objWriter
->getData();
}
else {
throw new PHPExcel_Writer_Exception("Invalid string table array passed.");
}
}
/**
* Write Rich Text
*
* @param PHPExcel_Shared_XMLWriter $objWriter XML Writer
* @param PHPExcel_RichText $pRichText Rich text
* @param string $prefix Optional Namespace prefix
* @throws PHPExcel_Writer_Exception
*/
public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix = NULL) {
if ($prefix !== NULL) {
$prefix .= ':';
}
// Loop through rich text elements
$elements = $pRichText
->getRichTextElements();
foreach ($elements as $element) {
// r
$objWriter
->startElement($prefix . 'r');
// rPr
if ($element instanceof PHPExcel_RichText_Run) {
// rPr
$objWriter
->startElement($prefix . 'rPr');
// rFont
$objWriter
->startElement($prefix . 'rFont');
$objWriter
->writeAttribute('val', $element
->getFont()
->getName());
$objWriter
->endElement();
// Bold
$objWriter
->startElement($prefix . 'b');
$objWriter
->writeAttribute('val', $element
->getFont()
->getBold() ? 'true' : 'false');
$objWriter
->endElement();
// Italic
$objWriter
->startElement($prefix . 'i');
$objWriter
->writeAttribute('val', $element
->getFont()
->getItalic() ? 'true' : 'false');
$objWriter
->endElement();
// Superscript / subscript
if ($element
->getFont()
->getSuperScript() || $element
->getFont()
->getSubScript()) {
$objWriter
->startElement($prefix . 'vertAlign');
if ($element
->getFont()
->getSuperScript()) {
$objWriter
->writeAttribute('val', 'superscript');
}
else {
if ($element
->getFont()
->getSubScript()) {
$objWriter
->writeAttribute('val', 'subscript');
}
}
$objWriter
->endElement();
}
// Strikethrough
$objWriter
->startElement($prefix . 'strike');
$objWriter
->writeAttribute('val', $element
->getFont()
->getStrikethrough() ? 'true' : 'false');
$objWriter
->endElement();
// Color
$objWriter
->startElement($prefix . 'color');
$objWriter
->writeAttribute('rgb', $element
->getFont()
->getColor()
->getARGB());
$objWriter
->endElement();
// Size
$objWriter
->startElement($prefix . 'sz');
$objWriter
->writeAttribute('val', $element
->getFont()
->getSize());
$objWriter
->endElement();
// Underline
$objWriter
->startElement($prefix . 'u');
$objWriter
->writeAttribute('val', $element
->getFont()
->getUnderline());
$objWriter
->endElement();
$objWriter
->endElement();
}
// t
$objWriter
->startElement($prefix . 't');
$objWriter
->writeAttribute('xml:space', 'preserve');
$objWriter
->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element
->getText()));
$objWriter
->endElement();
$objWriter
->endElement();
}
}
/**
* 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');
// } else if ($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_String::ControlCharacterPHP2OOXML($element
->getText()));
$objWriter
->endElement();
$objWriter
->endElement();
}
}
/**
* Flip string table (for index searching)
*
* @param array $stringTable Stringtable
* @return array
*/
public function flipStringTable($stringTable = array()) {
// Return value
$returnValue = array();
// Loop through stringtable and add flipped items to $returnValue
foreach ($stringTable as $key => $value) {
if (!$value instanceof PHPExcel_RichText) {
$returnValue[$value] = $key;
}
else {
if ($value instanceof PHPExcel_RichText) {
$returnValue[$value
->getHashCode()] = $key;
}
}
}
// Return
return $returnValue;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PHPExcel_Writer_Excel2007_StringTable:: |
public | function | * Create worksheet stringtable * * | |
PHPExcel_Writer_Excel2007_StringTable:: |
public | function | * Flip string table (for index searching) * * | |
PHPExcel_Writer_Excel2007_StringTable:: |
public | function | * Write Rich Text * * | |
PHPExcel_Writer_Excel2007_StringTable:: |
public | function | * Write Rich Text * * | |
PHPExcel_Writer_Excel2007_StringTable:: |
public | function | * Write string table to XML format * * | |
PHPExcel_Writer_Excel2007_WriterPart:: |
private | property | * Parent IWriter object * * | |
PHPExcel_Writer_Excel2007_WriterPart:: |
public | function | * Get parent IWriter object * * | |
PHPExcel_Writer_Excel2007_WriterPart:: |
public | function | * Set parent IWriter object * * | |
PHPExcel_Writer_Excel2007_WriterPart:: |
public | function | * Set parent IWriter object * * |