示例#1
0
 private function setMargins(\PHPExcel\Worksheet $pSheet)
 {
     $htmlPage = '@page { ';
     $htmlBody = 'body { ';
     $left = StringHelper::formatNumber($pSheet->getPageMargins()->getLeft()) . 'in; ';
     $htmlPage .= 'margin-left: ' . $left;
     $htmlBody .= 'margin-left: ' . $left;
     $right = StringHelper::formatNumber($pSheet->getPageMargins()->getRight()) . 'in; ';
     $htmlPage .= 'margin-right: ' . $right;
     $htmlBody .= 'margin-right: ' . $right;
     $top = StringHelper::formatNumber($pSheet->getPageMargins()->getTop()) . 'in; ';
     $htmlPage .= 'margin-top: ' . $top;
     $htmlBody .= 'margin-top: ' . $top;
     $bottom = StringHelper::formatNumber($pSheet->getPageMargins()->getBottom()) . 'in; ';
     $htmlPage .= 'margin-bottom: ' . $bottom;
     $htmlBody .= 'margin-bottom: ' . $bottom;
     $htmlPage .= "}\n";
     $htmlBody .= "}\n";
     return "<style>\n" . $htmlPage . $htmlBody . "</style>\n";
 }
示例#2
0
 /**
  * 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.");
     }
 }