Exemple #1
0
 /**
  *  Save PHPExcel to PDF file, post-save
  *
  *  @param     resource      $fileHandle
  *  @throws    PHPExcel_Writer_Exception
  */
 protected function restoreStateAfterSave($fileHandle)
 {
     //  Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($this->_saveArrayReturnType);
 }
Exemple #2
0
 /**
  * Save PHPExcel to file
  *
  * @param	string		$pFilename
  * @throws	PHPExcel_Writer_Exception
  */
 public function save($pFilename = null)
 {
     // Fetch sheet
     $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
     $saveDebugLog = PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->getWriteDebugLog();
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog(FALSE);
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'wb+');
     if ($fileHandle === false) {
         throw new PHPExcel_Writer_Exception("Could not open file {$pFilename} for writing.");
     }
     if ($this->_excelCompatibility) {
         fwrite($fileHandle, "");
         //	Enforce UTF-8 BOM Header
         $this->setEnclosure('"');
         //	Set enclosure to "
         $this->setDelimiter(";");
         //	Set delimiter to a semi-colon
         $this->setLineEnding("\r\n");
         fwrite($fileHandle, 'sep=' . $this->getDelimiter() . $this->_lineEnding);
     } elseif ($this->_useBOM) {
         // Write the UTF-8 BOM code if required
         fwrite($fileHandle, "");
     }
     //	Identify the range that we need to extract from the worksheet
     $maxCol = $sheet->getHighestDataColumn();
     $maxRow = $sheet->getHighestDataRow();
     // Write rows to file
     for ($row = 1; $row <= $maxRow; ++$row) {
         // Convert the row to an array...
         $cellsArray = $sheet->rangeToArray('A' . $row . ':' . $maxCol . $row, '', $this->_preCalculateFormulas);
         // ... and write to the file
         $this->_writeLine($fileHandle, $cellsArray[0]);
     }
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog);
 }
Exemple #3
0
 /**
  * Save PHPExcel to file
  *
  * @param	string		$pFilename
  * @throws	PHPExcel_Writer_Exception
  */
 public function save($pFilename = null)
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveDebugLog = PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->getWriteDebugLog();
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog(FALSE);
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Build CSS
     $this->buildCSS(!$this->_useInlineCss);
     // Open file
     $fileHandle = fopen($pFilename, 'wb+');
     if ($fileHandle === false) {
         throw new PHPExcel_Writer_Exception("Could not open file {$pFilename} for writing.");
     }
     // Write headers
     fwrite($fileHandle, $this->generateHTMLHeader(!$this->_useInlineCss));
     // Write navigation (tabs)
     if (!$this->_isPdf && $this->_generateSheetNavigationBlock) {
         fwrite($fileHandle, $this->generateNavigation());
     }
     // Write data
     fwrite($fileHandle, $this->generateSheetData());
     // Write footer
     fwrite($fileHandle, $this->generateHTMLFooter());
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog);
 }
Exemple #4
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFilename    Filename for the saved file
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Set PDF
     $this->_isPdf = true;
     // Build CSS
     $this->buildCSS(true);
     // Generate HTML
     $html = '';
     //$html .= $this->generateHTMLHeader(false);
     $html .= $this->generateSheetData();
     //$html .= $this->generateHTMLFooter();
     // Default PDF paper size
     $paperSize = 'LETTER';
     //	Letter	(8.5 in. by 11 in.)
     // Check for paper size and page orientation
     if (is_null($this->getSheetIndex())) {
         $orientation = $this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
     } else {
         $orientation = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
     }
     //	Override Page Orientation
     if (!is_null($this->_orientation)) {
         $orientation = $this->_orientation == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
     }
     //	Override Paper Size
     if (!is_null($this->_paperSize)) {
         $printPaperSize = $this->_paperSize;
     }
     if (isset(self::$_paperSizes[$printPaperSize])) {
         $paperSize = self::$_paperSizes[$printPaperSize];
     }
     // Create PDF
     $pdf = new TCPDF($orientation, 'pt', $paperSize);
     $pdf->setFontSubsetting(false);
     //	Set margins, converting inches to points (using 72 dpi)
     $pdf->SetMargins($printMargins->getLeft() * 72, $printMargins->getTop() * 72, $printMargins->getRight() * 72);
     $pdf->SetAutoPageBreak(true, $printMargins->getBottom() * 72);
     //		$pdf->setHeaderMargin($printMargins->getHeader() * 72);
     //		$pdf->setFooterMargin($printMargins->getFooter() * 72);
     $pdf->setPrintHeader(false);
     $pdf->setPrintFooter(false);
     $pdf->AddPage();
     // Set the appropriate font
     $pdf->SetFont($this->_font);
     $pdf->writeHTML($html);
     // Document info
     $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
     $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
     $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
     $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
     $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
     // Write to file
     fwrite($fileHandle, $pdf->output($pFilename, 'S'));
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #5
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     // Fetch sheet
     $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
     $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
     PHPExcel_Calculation::getInstance()->writeDebugLog = false;
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     if ($this->_useBOM) {
         // Write the UTF-8 BOM code
         fwrite($fileHandle, "");
     }
     // Convert sheet to array
     $cellsArray = $sheet->toArray('', $this->_preCalculateFormulas);
     // Write rows to file
     foreach ($cellsArray as $row) {
         $this->_writeLine($fileHandle, $row);
     }
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
     PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
 }
Exemple #6
0
 /**
  * @dataProvider providerMROUND
  */
 public function testMROUND()
 {
     $args = func_get_args();
     $expectedResult = array_pop($args);
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     $result = call_user_func_array(array('PHPExcel_Calculation_MathTrig', 'MROUND'), $args);
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_ARRAY);
     $this->assertEquals($expectedResult, $result, NULL, 1.0E-12);
 }
Exemple #7
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Build CSS
     $this->buildCSS(!$this->_useInlineCss);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Write headers
     fwrite($fileHandle, $this->generateHTMLHeader(!$this->_useInlineCss));
     // Write data
     fwrite($fileHandle, $this->generateSheetData());
     // Write footer
     fwrite($fileHandle, $this->generateHTMLFooter());
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #8
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Build CSS
     $this->buildCSS(true);
     // Generate HTML
     $html = '';
     //$html .= $this->generateHTMLHeader(false);
     $html .= $this->generateSheetData();
     //$html .= $this->generateHTMLFooter();
     // Default PDF paper size
     $paperSize = 'A4';
     $orientation = 'P';
     // Check for overrides
     if (is_null($this->getSheetIndex())) {
         $orientation = $this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == 'landscape' ? 'L' : 'P';
     } else {
         $orientation = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == 'landscape' ? 'L' : 'P';
     }
     // Create PDF
     $pdf = new TCPDF($orientation, 'pt', $paperSize);
     $pdf->AddPage();
     $pdf->writeHTML($html);
     // Document info
     $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
     $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
     $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
     $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
     $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
     // Write to file
     fwrite($fileHandle, $pdf->output($pFilename, 'S'));
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #9
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Fetch sheets
     $sheets = array();
     if (is_null($this->_sheetIndex)) {
         $sheets = $this->_phpExcel->getAllSheets();
     } else {
         $sheets[] = $this->_phpExcel->getSheet($this->_sheetIndex);
     }
     // PDF paper size
     $paperSize = 'A4';
     // Create PDF
     $pdf = new FPDF('P', 'pt', $paperSize);
     // Loop all sheets
     foreach ($sheets as $sheet) {
         // PDF orientation
         $orientation = 'P';
         if ($sheet->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) {
             $orientation = 'L';
         }
         // Start sheet
         $pdf->SetAutoPageBreak(true);
         $pdf->SetFont('Arial', '', 10);
         $pdf->AddPage($orientation);
         // Get worksheet dimension
         $dimension = explode(':', $sheet->calculateWorksheetDimension());
         $dimension[0] = PHPExcel_Cell::coordinateFromString($dimension[0]);
         $dimension[0][0] = PHPExcel_Cell::columnIndexFromString($dimension[0][0]) - 1;
         $dimension[1] = PHPExcel_Cell::coordinateFromString($dimension[1]);
         $dimension[1][0] = PHPExcel_Cell::columnIndexFromString($dimension[1][0]) - 1;
         // Calculate column widths
         $sheet->calculateColumnWidths();
         // Loop trough cells
         for ($row = $dimension[0][1]; $row <= $dimension[1][1]; ++$row) {
             // Line height
             $lineHeight = 0;
             // Calulate line height
             for ($column = $dimension[0][0]; $column <= $dimension[1][0]; ++$column) {
                 $rowDimension = $sheet->getRowDimension($row);
                 $cellHeight = PHPExcel_Shared_Drawing::pixelsToPoints(PHPExcel_Shared_Drawing::cellDimensionToPixels($rowDimension->getRowHeight()));
                 if ($cellHeight <= 0) {
                     $cellHeight = PHPExcel_Shared_Drawing::pixelsToPoints(PHPExcel_Shared_Drawing::cellDimensionToPixels($sheet->getDefaultRowDimension()->getRowHeight()));
                 }
                 if ($cellHeight <= 0) {
                     $cellHeight = $sheet->getStyleByColumnAndRow($column, $row)->getFont()->getSize();
                 }
                 if ($cellHeight > $lineHeight) {
                     $lineHeight = $cellHeight;
                 }
             }
             // Output values
             for ($column = $dimension[0][0]; $column <= $dimension[1][0]; ++$column) {
                 // Start with defaults...
                 $pdf->SetFont('Arial', '', 10);
                 $pdf->SetTextColor(0, 0, 0);
                 $pdf->SetDrawColor(100, 100, 100);
                 $pdf->SetFillColor(255, 255, 255);
                 // Coordinates
                 $startX = $pdf->GetX();
                 $startY = $pdf->GetY();
                 // Cell exists?
                 $cellData = '';
                 if ($sheet->cellExistsByColumnAndRow($column, $row)) {
                     if ($sheet->getCellByColumnAndRow($column, $row)->getValue() instanceof PHPExcel_RichText) {
                         $cellData = $sheet->getCellByColumnAndRow($column, $row)->getValue()->getPlainText();
                     } else {
                         if ($this->_preCalculateFormulas) {
                             $cellData = PHPExcel_Style_NumberFormat::ToFormattedString($sheet->getCellByColumnAndRow($column, $row)->getCalculatedValue(), $sheet->getstyle($sheet->getCellByColumnAndRow($column, $row)->getCoordinate())->getNumberFormat()->getFormatCode());
                         } else {
                             $cellData = PHPExcel_Style_NumberFormat::ToFormattedString($sheet->getCellByColumnAndRow($column, $row)->getValue(), $sheet->getstyle($sheet->getCellByColumnAndRow($column, $row)->getCoordinate())->getNumberFormat()->getFormatCode());
                         }
                     }
                 }
                 // Style information
                 $style = $sheet->getStyleByColumnAndRow($column, $row);
                 // Cell width
                 $columnDimension = $sheet->getColumnDimensionByColumn($column);
                 if ($columnDimension->getWidth() == -1) {
                     $columnDimension->setAutoSize(true);
                     $sheet->calculateColumnWidths(false);
                 }
                 $cellWidth = PHPExcel_Shared_Drawing::pixelsToPoints(PHPExcel_Shared_Drawing::cellDimensionToPixels($columnDimension->getWidth()));
                 // Cell height
                 $rowDimension = $sheet->getRowDimension($row);
                 $cellHeight = PHPExcel_Shared_Drawing::pixelsToPoints(PHPExcel_Shared_Drawing::cellDimensionToPixels($rowDimension->getRowHeight()));
                 if ($cellHeight <= 0) {
                     $cellHeight = $style->getFont()->getSize();
                 }
                 // Column span? Rowspan?
                 $singleCellWidth = $cellWidth;
                 $singleCellHeight = $cellHeight;
                 foreach ($sheet->getMergeCells() as $cells) {
                     if ($sheet->getCellByColumnAndRow($column, $row)->isInRange($cells)) {
                         list($first, ) = PHPExcel_Cell::splitRange($cells);
                         if ($first == $sheet->getCellByColumnAndRow($column, $row)->getCoordinate()) {
                             list($colSpan, $rowSpan) = PHPExcel_Cell::rangeDimension($cells);
                             $cellWidth = $cellWidth * $colSpan;
                             $cellHeight = $cellHeight * $rowSpan;
                         }
                         break;
                     }
                 }
                 // Cell height OK?
                 if ($cellHeight < $lineHeight) {
                     $cellHeight = $lineHeight;
                     $singleCellHeight = $cellHeight;
                 }
                 // Font formatting
                 $fontStyle = '';
                 if ($style->getFont()->getBold()) {
                     $fontStyle .= 'B';
                 }
                 if ($style->getFont()->getItalic()) {
                     $fontStyle .= 'I';
                 }
                 if ($style->getFont()->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE) {
                     $fontStyle .= 'U';
                 }
                 $pdf->SetFont('Arial', $fontStyle, $style->getFont()->getSize());
                 // Text alignment
                 $alignment = 'L';
                 switch ($style->getAlignment()->getHorizontal()) {
                     case PHPExcel_Style_Alignment::HORIZONTAL_CENTER:
                         $alignment = 'C';
                         break;
                     case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT:
                         $alignment = 'R';
                         break;
                     case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY:
                         $alignment = 'J';
                         break;
                     case PHPExcel_Style_Alignment::HORIZONTAL_LEFT:
                     case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL:
                     default:
                         $alignment = 'L';
                         break;
                 }
                 // Text color
                 $pdf->SetTextColor(hexdec(substr($style->getFont()->getColor()->getRGB(), 0, 2)), hexdec(substr($style->getFont()->getColor()->getRGB(), 2, 2)), hexdec(substr($style->getFont()->getColor()->getRGB(), 4, 2)));
                 // Fill color
                 if ($style->getFill()->getFillType() != PHPExcel_Style_Fill::FILL_NONE) {
                     $pdf->SetFillColor(hexdec(substr($style->getFill()->getStartColor()->getRGB(), 0, 2)), hexdec(substr($style->getFill()->getStartColor()->getRGB(), 2, 2)), hexdec(substr($style->getFill()->getStartColor()->getRGB(), 4, 2)));
                 }
                 // Border color
                 $borders = '';
                 if ($style->getBorders()->getLeft()->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
                     $borders .= 'L';
                     $pdf->SetDrawColor(hexdec(substr($style->getBorders()->getLeft()->getColor()->getRGB(), 0, 2)), hexdec(substr($style->getBorders()->getLeft()->getColor()->getRGB(), 2, 2)), hexdec(substr($style->getBorders()->getLeft()->getColor()->getRGB(), 4, 2)));
                 }
                 if ($style->getBorders()->getRight()->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
                     $borders .= 'R';
                     $pdf->SetDrawColor(hexdec(substr($style->getBorders()->getRight()->getColor()->getRGB(), 0, 2)), hexdec(substr($style->getBorders()->getRight()->getColor()->getRGB(), 2, 2)), hexdec(substr($style->getBorders()->getRight()->getColor()->getRGB(), 4, 2)));
                 }
                 if ($style->getBorders()->getTop()->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
                     $borders .= 'T';
                     $pdf->SetDrawColor(hexdec(substr($style->getBorders()->getTop()->getColor()->getRGB(), 0, 2)), hexdec(substr($style->getBorders()->getTop()->getColor()->getRGB(), 2, 2)), hexdec(substr($style->getBorders()->getTop()->getColor()->getRGB(), 4, 2)));
                 }
                 if ($style->getBorders()->getBottom()->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) {
                     $borders .= 'B';
                     $pdf->SetDrawColor(hexdec(substr($style->getBorders()->getBottom()->getColor()->getRGB(), 0, 2)), hexdec(substr($style->getBorders()->getBottom()->getColor()->getRGB(), 2, 2)), hexdec(substr($style->getBorders()->getBottom()->getColor()->getRGB(), 4, 2)));
                 }
                 if ($borders == '') {
                     $borders = 0;
                 }
                 if ($sheet->getShowGridlines()) {
                     $borders = 'LTRB';
                 }
                 // Image?
                 $iterator = $sheet->getDrawingCollection()->getIterator();
                 while ($iterator->valid()) {
                     if ($iterator->current()->getCoordinates() == PHPExcel_Cell::stringFromColumnIndex($column) . ($row + 1)) {
                         try {
                             $pdf->Image($iterator->current()->getPath(), $pdf->GetX(), $pdf->GetY(), $iterator->current()->getWidth(), $iterator->current()->getHeight(), '', $this->_tempDir);
                         } catch (Exception $ex) {
                         }
                     }
                     $iterator->next();
                 }
                 // Print cell
                 $pdf->MultiCell($cellWidth, $cellHeight, $cellData, $borders, $alignment, $style->getFill()->getFillType() == PHPExcel_Style_Fill::FILL_NONE ? 0 : 1);
                 // Coordinates
                 $endX = $pdf->GetX();
                 $endY = $pdf->GetY();
                 // Revert to original Y location
                 if ($endY > $startY) {
                     $pdf->SetY($startY);
                     if ($lineHeight < $lineHeight + ($endY - $startY)) {
                         $lineHeight = $lineHeight + ($endY - $startY);
                     }
                 }
                 $pdf->SetX($startX + $singleCellWidth);
                 // Hyperlink?
                 if ($sheet->getCellByColumnAndRow($column, $row)->hasHyperlink()) {
                     if (!$sheet->getCellByColumnAndRow($column, $row)->getHyperlink()->isInternal()) {
                         $pdf->Link($startX, $startY, $endX - $startX, $endY - $startY, $sheet->getCellByColumnAndRow($column, $row)->getHyperlink()->getUrl());
                     }
                 }
             }
             // Garbage collect!
             $sheet->garbageCollect();
             // Next line...
             $pdf->Ln($lineHeight);
         }
     }
     // Document info
     $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
     $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
     $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
     $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
     $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
     // Write to file
     fwrite($fileHandle, $pdf->output($pFilename, 'S'));
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #10
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Set PDF
     $this->_isPdf = true;
     // Build CSS
     $this->buildCSS(true);
     // Default PDF paper size
     $paperSize = 'LETTER';
     //	Letter	(8.5 in. by 11 in.)
     // Check for paper size and page orientation
     if (is_null($this->getSheetIndex())) {
         $orientation = $this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
     } else {
         $orientation = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
     }
     //	Override Page Orientation
     if (!is_null($this->getOrientation())) {
         $orientation = $this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
     }
     //	Override Paper Size
     if (!is_null($this->getPaperSize())) {
         $printPaperSize = $this->getPaperSize();
     }
     if (isset(self::$_paperSizes[$printPaperSize])) {
         $paperSize = self::$_paperSizes[$printPaperSize];
     }
     $orientation = $orientation == 'L' ? 'landscape' : 'portrait';
     // Create PDF
     $pdf = new DOMPDF();
     $pdf->set_paper(strtolower($paperSize), $orientation);
     $pdf->load_html($this->generateHTMLHeader(false) . $this->generateSheetData() . $this->generateHTMLFooter());
     $pdf->render();
     // Write to file
     fwrite($fileHandle, $pdf->output());
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #11
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null)
 {
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Write headers
     fwrite($fileHandle, $this->generateHTMLHeader(true));
     // Write data
     fwrite($fileHandle, $this->generateSheetData());
     // Write footer
     fwrite($fileHandle, $this->generateHTMLFooter());
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #12
0
 /**
  * Save PHPExcel to file
  *
  * @param	string		$pFilename
  * @throws	PHPExcel_Writer_Exception
  */
 public function save($pFilename = null)
 {
     // Fetch sheet
     $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
     $saveDebugLog = PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->getWriteDebugLog();
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog(FALSE);
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'wb+');
     if ($fileHandle === false) {
         throw new PHPExcel_Writer_Exception("Could not open file {$pFilename} for writing.");
     }
     if ($this->_excelCompatibility) {
         // Write the UTF-16LE BOM code
         fwrite($fileHandle, "ÿþ");
         //	Excel uses UTF-16LE encoding
         $this->setEnclosure();
         //	Default enclosure is "
         $this->setDelimiter("\t");
         //	Excel delimiter is a TAB
     } elseif ($this->_useBOM) {
         // Write the UTF-8 BOM code
         fwrite($fileHandle, "");
     }
     //	Identify the range that we need to extract from the worksheet
     $maxCol = $sheet->getHighestColumn();
     $maxRow = $sheet->getHighestRow();
     // Write rows to file
     for ($row = 1; $row <= $maxRow; ++$row) {
         // Convert the row to an array...
         $this->setEnclosure('');
         $cellsArray = $sheet->rangeToArray('A' . $row . ':' . $maxCol . $row, '', $this->_preCalculateFormulas);
         // ... and write to the file
         $this->_writeLine($fileHandle, $cellsArray[0]);
     }
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
     PHPExcel_Calculation::getInstance($this->_phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog);
 }
Exemple #13
0
	/**
	 * Save PHPExcel to file
	 *
	 * @param 	string 		$pFileName
	 * @throws 	Exception
	 */
	public function save($pFilename = null) {
		// garbage collect
		$this->_phpExcel->garbageCollect();

		$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
		PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);

		// Open file
		$fileHandle = fopen($pFilename, 'w');
		if ($fileHandle === false) {
			throw new Exception("Could not open file $pFilename for writing.");
		}
		// Set PDF
		$this->_isPdf = true;
		// Build CSS
		$this->buildCSS(true);
		
		if(!$this->_printParamsSetted) {
			// Default PDF paper size
			$paperSize = 'A4';
	
			// Check for paper size and page orientation
			if (is_null($this->getSheetIndex())) {
				$orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
				$printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
				$printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
			} else {
				$orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
				$printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
				$printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
			}
			$this->setOrientation($orientation);
	
			//	Override Page Orientation
			if (!is_null($this->getOrientation())) {
				$orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) ?
					PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
			}
			$orientation = strtoupper($orientation);
	
			//	Override Paper Size
			if (!is_null($this->getPaperSize())) {
				$printPaperSize = $this->getPaperSize();
			}
	
			if (isset(self::$_paperSizes[$printPaperSize])) {
				$paperSize = self::$_paperSizes[$printPaperSize];
			}
			
			if(is_string($paperSize)){
				$paperSize = strtoupper($paperSize.(substr($orientation,0,1) == 'L' ? '-L' : ''));
			}
			
			if($printMargins) {	//$printMargins是英寸制,要转换成毫米
				$tmargin = 25.4 * $printMargins->getTop();
				$bmargin = 25.4 * $printMargins->getBottom();
				$lmargin = 25.4 * $printMargins->getLeft();
				$rmargin = 25.4 * $printMargins->getRight();
				$hmargin = 25.4 * $printMargins->getHeader();
				$fmargin = 25.4 * $printMargins->getFooter();
			}
		}
		else {
			$paperSize = $this->_printPaperSize;
			$orientation = $this->_printOrientation;
			$tmargin = $this->_printTmargin;
			$bmargin = $this->_printBmargin;
			$lmargin = $this->_printLmargin;
			$rmargin = $this->_printRmargin;
			$hmargin = $this->_printHmargin;
			$fmargin = $this->_printFmargin;
		}
		
		error_reporting(E_ALL ^ E_NOTICE); //当前的版本很多notice警告,屏蔽掉
		
		// Create PDF
		$pdf = new mpdf();
		$pdf->useAdobeCJK = true;		// Default setting in config.php
		$pdf->SetAutoFont(AUTOFONT_ALL);	//	AUTOFONT_CJK | AUTOFONT_THAIVIET | AUTOFONT_RTL | AUTOFONT_INDIC	// AUTOFONT_ALL

// 		Log::write("\ndefault pdf:\nT:".$pdf->tMargin."\nB:".$pdf->bMargin."\nL:".$pdf->DeflMargin."\nR:".$pdf->DefrMargin."\nH:".$pdf->margin_header."\nF:".$pdf->margin_footer."\n\n");

		$pdf->_setPageSize($paperSize, $orientation);
        $pdf->DefOrientation = $orientation;

        if(!empty($this->_printFooterO)) {
        	$pdf->SetHTMLFooter($this->_printFooterO);
        }
        if(!empty($this->_printHeaderO)) {
        	$pdf->SetHTMLHeader($this->_printHeaderO, 'O');
        }
		if(!empty($this->_printFooterE)) {
			$pdf->SetHTMLFooter($this->_printFooterE, 'E');
		}
		if(!empty($this->_printHeaderE)) {
			$pdf->SetHTMLHeader($this->_printHeaderE, 'E');
		}
		if(!empty($tmargin)) {
			$pdf->tMargin = $tmargin;
		}
		if(!empty($bmargin)) {
			$pdf->bMargin = $bmargin;
		}
		if(!empty($lmargin)) {
			$pdf->DeflMargin = $lmargin;
		}
		if(!empty($rmargin)) {
			$pdf->DefrMargin = $rmargin;
		}
		if(!empty($hmargin)) {
			$pdf->margin_header = $hmargin;
		}
		if(!empty($fmargin)) {
			$pdf->margin_footer = $fmargin;
		}
		
		$pdf->mirrorMargins = $this->_mirrorMargins;
		
        if(!empty($this->_script)) {
        	$pdf->SetJS($this->_script);
        }
        
        // Document info
		$pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
		$pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
		$pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
		$pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
		$pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());

		$pdf->WriteHTML(
			$this->generateHTMLHeader(false) .
			$this->generateSheetData() .
			$this->generateHTMLFooter()
		);

		// Write to file
		fwrite($fileHandle, $pdf->Output('','S'));

		// Close file
		fclose($fileHandle);

		PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
	}
Exemple #14
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	PHPExcel_Reader_Exception
  */
 public function save($pFilename = null)
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new PHPExcel_Reader_Exception("Could not open file {$pFilename} for writing.");
     }
     // Set PDF
     $this->_isPdf = true;
     // Build CSS
     $this->buildCSS(true);
     // Default PDF paper size
     $paperSize = 'LETTER';
     //	Letter	(8.5 in. by 11 in.)
     // Check for paper size and page orientation
     if (is_null($this->getSheetIndex())) {
         $orientation = $this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
     } else {
         $orientation = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
         $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
     }
     $this->setOrientation($orientation);
     //	Override Page Orientation
     if (!is_null($this->getOrientation())) {
         $orientation = $this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation();
     }
     $orientation = strtoupper($orientation);
     //	Override Paper Size
     if (!is_null($this->getPaperSize())) {
         $printPaperSize = $this->getPaperSize();
     }
     if (isset(self::$_paperSizes[$printPaperSize])) {
         $paperSize = self::$_paperSizes[$printPaperSize];
     }
     // Create PDF
     $pdf = new mpdf();
     $ortmp = $orientation;
     $pdf->_setPageSize(strtoupper($paperSize), $ortmp);
     $pdf->DefOrientation = $orientation;
     $pdf->AddPage($orientation);
     // Document info
     $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
     $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
     $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
     $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
     $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
     $pdf->WriteHTML($this->generateHTMLHeader(false) . $this->generateSheetData() . $this->generateHTMLFooter());
     // Write to file
     fwrite($fileHandle, $pdf->Output('', 'S'));
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #15
0
 /**
  * Save PHPExcel to file
  *
  * @param 	string 		$pFileName
  * @throws 	Exception
  */
 public function save($pFilename = null, $title = '')
 {
     // garbage collect
     $this->_phpExcel->garbageCollect();
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'w');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     // Set PDF
     $this->_isPdf = true;
     // Build CSS
     $this->buildCSS(true);
     // Generate HTML
     $html = '';
     //$html .= $this->generateHTMLHeader(false);
     if (!empty($title)) {
         $html .= '<h1 align="center">' . $title . '</h1>';
     }
     $html .= $this->generateSheetData();
     //$html .= $this->generateHTMLFooter();
     // Default PDF paper size
     $paperSize = 'LETTER';
     //	Letter	(8.5 in. by 11 in.)
     // Check for paper size and page orientation
     if (is_null($this->getSheetIndex())) {
         $orientation = $this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
     } else {
         $orientation = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
         $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
     }
     //	Override Page Orientation
     if (!is_null($this->_orientation)) {
         $orientation = $this->_orientation == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
     }
     //	Override Paper Size
     if (!is_null($this->_paperSize)) {
         $printPaperSize = $this->_paperSize;
     }
     if (isset(self::$_paperSizes[$printPaperSize])) {
         $paperSize = self::$_paperSizes[$printPaperSize];
     }
     // Create PDF
     $pdf = new TCPDF($orientation, 'pt', $paperSize);
     $pdf->setPrintHeader(false);
     $pdf->setPrintFooter(false);
     $pdf->AddPage();
     // Set the appropriate font
     require_once "../classes/Settings.php";
     require_once "../classes/SettingsQuery.php";
     $setQ = new SettingsQuery();
     $setQ->connect();
     if ($setQ->errorOccurred()) {
         $setQ->close();
         displayErrorPage($setQ);
     }
     $setQ->execSelect();
     if ($setQ->errorOccurred()) {
         $setQ->close();
         displayErrorPage($setQ);
     }
     $set = $setQ->fetchRow();
     $pdf->setFont($set->getFontNormal(), '', $set->getFontSize());
     //$pdf->SetFont($this->_font);
     $pdf->writeHTML($html);
     // Document info
     $pdf->SetTitle($this->_phpExcel->getProperties()->getTitle());
     $pdf->SetAuthor($this->_phpExcel->getProperties()->getCreator());
     $pdf->SetSubject($this->_phpExcel->getProperties()->getSubject());
     $pdf->SetKeywords($this->_phpExcel->getProperties()->getKeywords());
     $pdf->SetCreator($this->_phpExcel->getProperties()->getCreator());
     // Write to file
     fwrite($fileHandle, $pdf->output($pFilename, 'S'));
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
 }
Exemple #16
-1
 /**
  * Save PHPExcel to file
  *
  * @param	string		$pFilename
  * @throws	Exception
  */
 public function save($pFilename = null)
 {
     // Fetch sheet
     $sheet = $this->_phpExcel->getSheet($this->_sheetIndex);
     $saveDebugLog = PHPExcel_Calculation::getInstance()->writeDebugLog;
     PHPExcel_Calculation::getInstance()->writeDebugLog = false;
     $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
     PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
     // Open file
     $fileHandle = fopen($pFilename, 'wb+');
     if ($fileHandle === false) {
         throw new Exception("Could not open file {$pFilename} for writing.");
     }
     if ($this->_useBOM) {
         // Write the UTF-8 BOM code
         fwrite($fileHandle, "");
     }
     //	Identify the range that we need to extract from the worksheet
     $maxCol = $sheet->getHighestColumn();
     $maxRow = $sheet->getHighestRow();
     // Write rows to file
     for ($row = 1; $row <= $maxRow; ++$row) {
         // Convert the row to an array...
         $cellsArray = $sheet->rangeToArray('A' . $row . ':' . $maxCol . $row, '', $this->_preCalculateFormulas);
         // ... and write to the file
         $this->_writeLine($fileHandle, $cellsArray[0]);
     }
     // Close file
     fclose($fileHandle);
     PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType);
     PHPExcel_Calculation::getInstance()->writeDebugLog = $saveDebugLog;
 }