723 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			723 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Vtiful\Kernel;
 | |
| 
 | |
| /**
 | |
|  * Class Excel
 | |
|  *
 | |
|  * @author  viest
 | |
|  *
 | |
|  * @package Vtiful\Kernel
 | |
|  */
 | |
| class Excel
 | |
| {
 | |
|     const TYPE_STRING = 0x01;
 | |
|     const TYPE_INT = 0x02;
 | |
|     const TYPE_DOUBLE = 0x04;
 | |
|     const TYPE_TIMESTAMP = 0x08;
 | |
| 
 | |
|     const SKIP_NONE = 0x00;
 | |
|     const SKIP_EMPTY_ROW = 0x01;
 | |
|     const SKIP_EMPTY_CELLS = 0x02;
 | |
| 
 | |
|     const GRIDLINES_HIDE_ALL = 0;
 | |
|     const GRIDLINES_SHOW_SCREEN = 1;
 | |
|     const GRIDLINES_SHOW_PRINT = 2;
 | |
|     const GRIDLINES_SHOW_ALL = 3;
 | |
| 
 | |
|     /**
 | |
|      * Excel constructor.
 | |
|      *
 | |
|      * @param array $config
 | |
|      */
 | |
|     public function __construct(array $config)
 | |
|     {
 | |
|         //
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * File Name
 | |
|      *
 | |
|      * @param string $fileName
 | |
|      * @param string $sheetName
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function fileName(string $fileName, string $sheetName = 'Sheet1'): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Const memory model
 | |
|      *
 | |
|      * @param string $fileName
 | |
|      * @param string $sheetName
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function constMemory(string $fileName, string $sheetName = 'Sheet1'): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add a new worksheet to a workbook.
 | |
|      *
 | |
|      * The worksheet name must be a valid Excel worksheet name, i.e. it must be
 | |
|      * less than 32 character and it cannot contain any of the characters:
 | |
|      *
 | |
|      *     / \ [ ] : * ?
 | |
|      *
 | |
|      * In addition, you cannot use the same, case insensitive, `$sheetName` for more
 | |
|      * than one worksheet.
 | |
|      *
 | |
|      * @param string|NULL $sheetName
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function addSheet(?string $sheetName): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Checkout worksheet
 | |
|      *
 | |
|      * @param string $sheetName
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function checkoutSheet(string $sheetName): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert data on the first line of the worksheet
 | |
|      *
 | |
|      * @param array $header
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function header(array $header): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert data on the worksheet
 | |
|      *
 | |
|      * @param array $data
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function data(array $data): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Generate file
 | |
|      *
 | |
|      * @return string
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function output(): string
 | |
|     {
 | |
|         return 'FilePath';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get file resource
 | |
|      *
 | |
|      * @return resource
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function getHandle()
 | |
|     {
 | |
|         //
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Auto filter on the worksheet
 | |
|      *
 | |
|      * @param string $range
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function autoFilter(string $range): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert data on the cell
 | |
|      *
 | |
|      * @param int               $row
 | |
|      * @param int               $column
 | |
|      * @param int|string|double $data
 | |
|      * @param string|null       $format
 | |
|      * @param resource|null     $formatHandle
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertText(int $row, int $column, $data, string $format = NULL, $formatHandle = NULL): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert date on the cell
 | |
|      *
 | |
|      * @param int           $row
 | |
|      * @param int           $column
 | |
|      * @param int           $timestamp
 | |
|      * @param string|NULL   $format
 | |
|      * @param resource|null $formatHandle
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertDate(int $row, int $column, int $timestamp, string $format = NULL, $formatHandle = NULL): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert chart on the cell
 | |
|      *
 | |
|      * @param int      $row
 | |
|      * @param int      $column
 | |
|      * @param resource $chartResource
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertChart(int $row, int $column, $chartResource): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert url on the cell
 | |
|      *
 | |
|      * @param int           $row
 | |
|      * @param int           $column
 | |
|      * @param string        $url
 | |
|      * @param resource|null $formatHandle
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertUrl(int $row, int $column, string $url, $formatHandle = NULL): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert image on the cell
 | |
|      *
 | |
|      * @param int    $row
 | |
|      * @param int    $column
 | |
|      * @param string $imagePath
 | |
|      * @param float  $width
 | |
|      * @param float  $height
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertImage(int $row, int $column, string $imagePath, float $width = 1, float $height = 1): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Insert Formula on the cell
 | |
|      *
 | |
|      * @param int    $row
 | |
|      * @param int    $column
 | |
|      * @param string $formula
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function insertFormula(int $row, int $column, string $formula): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Merge cells
 | |
|      *
 | |
|      * @param string $range
 | |
|      * @param string $data
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function MergeCells(string $range, string $data): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set column cells width or format
 | |
|      *
 | |
|      * @param string        $range
 | |
|      * @param float         $cellWidth
 | |
|      * @param resource|null $formatHandle
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function setColumn(string $range, float $cellWidth, $formatHandle = NULL): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set row cells height or format
 | |
|      *
 | |
|      * @param string        $range
 | |
|      * @param float         $cellHeight
 | |
|      * @param resource|null $formatHandle
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function setRow(string $range, float $cellHeight, $formatHandle = NULL): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Open xlsx file
 | |
|      *
 | |
|      * @param string $fileName
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function openFile(string $fileName): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Open sheet
 | |
|      *
 | |
|      * default open first sheet
 | |
|      *
 | |
|      * @param string|NULL $sheetName
 | |
|      * @param int         skipFlag
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function openSheet(string $sheetName = NULL, int $skipFlag = 0x00): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set row cell data type
 | |
|      *
 | |
|      * @param array $types
 | |
|      *
 | |
|      * @return Excel
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function setType(array $types): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Read values from the sheet
 | |
|      *
 | |
|      * @return array
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function getSheetData(): array
 | |
|     {
 | |
|         return [];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Read values from the sheet
 | |
|      *
 | |
|      * @return array
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function nextRow(): array
 | |
|     {
 | |
|         return [];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Next Cell In Callback
 | |
|      *
 | |
|      * @param callable    $callback  function(int $row, int $cell, string $data)
 | |
|      * @param string|NULL $sheetName sheet name
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function nextCellCallback(callable $callback, string $sheetName = NULL): void
 | |
|     {
 | |
|         //
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Freeze panes
 | |
|      *
 | |
|      * freezePanes(1, 0); // Freeze the first row.
 | |
|      * freezePanes(0, 1); // Freeze the first column.
 | |
|      * freezePanes(1, 1); // Freeze first row/column.
 | |
|      *
 | |
|      * @param int $row
 | |
|      * @param int $column
 | |
|      *
 | |
|      * @return $this
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function freezePanes(int $row, int $column): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Gridline
 | |
|      *
 | |
|      * Display or hide screen and print gridlines using one of the values of
 | |
|      *
 | |
|      * \Vtiful\Kernel\Excel::GRIDLINES_HIDE_ALL
 | |
|      * \Vtiful\Kernel\Excel::GRIDLINES_SHOW_ALL
 | |
|      * \Vtiful\Kernel\Excel::GRIDLINES_SHOW_PRINT
 | |
|      * \Vtiful\Kernel\Excel::GRIDLINES_SHOW_SCREEN
 | |
|      *
 | |
|      * Excel default is that the screen gridlines are on and the printed worksheet is off.
 | |
|      *
 | |
|      * @param int $option
 | |
|      *
 | |
|      * @return $this
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function gridline(int $option): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Worksheet zoom
 | |
|      *
 | |
|      * Set the worksheet zoom factor in the range 10 <= zoom <= 400:
 | |
|      *
 | |
|      * @param int $scale
 | |
|      *
 | |
|      * @return $this
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function zoom(int $scale): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Class Format
 | |
|  *
 | |
|  * @author  viest
 | |
|  *
 | |
|  * @package Vtiful\Kernel
 | |
|  */
 | |
| class Format
 | |
| {
 | |
|     const UNDERLINE_SINGLE = 0x00;
 | |
|     const UNDERLINE_DOUBLE = 0x00;
 | |
|     const UNDERLINE_SINGLE_ACCOUNTING = 0x00;
 | |
|     const UNDERLINE_DOUBLE_ACCOUNTING = 0x00;
 | |
| 
 | |
|     const FORMAT_ALIGN_LEFT = 0x00;
 | |
|     const FORMAT_ALIGN_CENTER = 0x00;
 | |
|     const FORMAT_ALIGN_RIGHT = 0x00;
 | |
|     const FORMAT_ALIGN_FILL = 0x00;
 | |
|     const FORMAT_ALIGN_JUSTIFY = 0x00;
 | |
|     const FORMAT_ALIGN_CENTER_ACROSS = 0x00;
 | |
|     const FORMAT_ALIGN_DISTRIBUTED = 0x00;
 | |
|     const FORMAT_ALIGN_VERTICAL_TOP = 0x00;
 | |
|     const FORMAT_ALIGN_VERTICAL_BOTTOM = 0x00;
 | |
|     const FORMAT_ALIGN_VERTICAL_CENTER = 0x00;
 | |
|     const FORMAT_ALIGN_VERTICAL_JUSTIFY = 0x00;
 | |
|     const FORMAT_ALIGN_VERTICAL_DISTRIBUTED = 0x00;
 | |
| 
 | |
|     const COLOR_BLACK = 0x00;
 | |
|     const COLOR_BLUE = 0x00;
 | |
|     const COLOR_BROWN = 0x00;
 | |
|     const COLOR_CYAN = 0x00;
 | |
|     const COLOR_GRAY = 0x00;
 | |
|     const COLOR_GREEN = 0x00;
 | |
|     const COLOR_LIME = 0x00;
 | |
|     const COLOR_MAGENTA = 0x00;
 | |
|     const COLOR_NAVY = 0x00;
 | |
|     const COLOR_ORANGE = 0x00;
 | |
|     const COLOR_PINK = 0x00;
 | |
|     const COLOR_PURPLE = 0x00;
 | |
|     const COLOR_RED = 0x00;
 | |
|     const COLOR_SILVER = 0x00;
 | |
|     const COLOR_WHITE = 0x00;
 | |
|     const COLOR_YELLOW = 0x00;
 | |
| 
 | |
|     const PATTERN_NONE = 0x00;
 | |
|     const PATTERN_SOLID = 0x00;
 | |
|     const PATTERN_MEDIUM_GRAY = 0x00;
 | |
|     const PATTERN_DARK_GRAY = 0x00;
 | |
|     const PATTERN_LIGHT_GRAY = 0x00;
 | |
|     const PATTERN_DARK_HORIZONTAL = 0x00;
 | |
|     const PATTERN_DARK_VERTICAL = 0x00;
 | |
|     const PATTERN_DARK_DOWN = 0x00;
 | |
|     const PATTERN_DARK_UP = 0x00;
 | |
|     const PATTERN_DARK_GRID = 0x00;
 | |
|     const PATTERN_DARK_TRELLIS = 0x00;
 | |
|     const PATTERN_LIGHT_HORIZONTAL = 0x00;
 | |
|     const PATTERN_LIGHT_VERTICAL = 0x00;
 | |
|     const PATTERN_LIGHT_DOWN = 0x00;
 | |
|     const PATTERN_LIGHT_UP = 0x00;
 | |
|     const PATTERN_LIGHT_GRID = 0x00;
 | |
|     const PATTERN_LIGHT_TRELLIS = 0x00;
 | |
|     const PATTERN_GRAY_125 = 0x00;
 | |
|     const PATTERN_GRAY_0625 = 0x00;
 | |
| 
 | |
|     const BORDER_THIN = 0x00;
 | |
|     const BORDER_MEDIUM = 0x00;
 | |
|     const BORDER_DASHED = 0x00;
 | |
|     const BORDER_DOTTED = 0x00;
 | |
|     const BORDER_THICK = 0x00;
 | |
|     const BORDER_DOUBLE = 0x00;
 | |
|     const BORDER_HAIR = 0x00;
 | |
|     const BORDER_MEDIUM_DASHED = 0x00;
 | |
|     const BORDER_DASH_DOT = 0x00;
 | |
|     const BORDER_MEDIUM_DASH_DOT = 0x00;
 | |
|     const BORDER_DASH_DOT_DOT = 0x00;
 | |
|     const BORDER_MEDIUM_DASH_DOT_DOT = 0x00;
 | |
|     const BORDER_SLANT_DASH_DOT = 0x00;
 | |
| 
 | |
|     /**
 | |
|      * Format constructor.
 | |
|      *
 | |
|      * @param resource $fileHandle
 | |
|      */
 | |
|     public function __construct($fileHandle)
 | |
|     {
 | |
|         //
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Wrap
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function wrap(): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Bold
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function bold(): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Italic
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function italic(): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Cells border
 | |
|      *
 | |
|      * @param int $style const BORDER_***
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function border(int $style): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Align
 | |
|      *
 | |
|      * @param int ...$style const FORMAT_ALIGN_****
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function align(...$style): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Number format
 | |
|      *
 | |
|      * @param string $format
 | |
|      *
 | |
|      * #,##0
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function number(string $format): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Font color
 | |
|      *
 | |
|      * @param int $color const COLOR_****
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function fontColor(int $color): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Font
 | |
|      *
 | |
|      * @param string $fontName
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function font(string $fontName): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Font size
 | |
|      *
 | |
|      * @param float $size
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function fontSize(float $size): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * String strikeout
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function strikeout(): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Underline
 | |
|      *
 | |
|      * @param int $style const UNDERLINE_****
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function underline(int $style): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Cell background
 | |
|      *
 | |
|      * @param int $color   const COLOR_****
 | |
|      * @param int $pattern const PATTERN_****
 | |
|      *
 | |
|      * @return Format
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function background(int $color, int $pattern = self::PATTERN_SOLID): self
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Format to resource
 | |
|      *
 | |
|      * @return resource
 | |
|      *
 | |
|      * @author viest
 | |
|      */
 | |
|     public function toResource()
 | |
|     {
 | |
|         //
 | |
|     }
 | |
| } | 
