diff --git a/README.md b/README.md index 55dbf3f..9eb46c0 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ OUTLINE - [Merge Cells](#merge-cells) - [Multiple Sheets](#multiple-sheets) - [setSheet()](#setsheet) + - [getSheet()](#getsheet) - [Map of Coordinates & Ranges](#multiple-sheets) - [Columns Format](#columns-format) - [Cells Format](#cells-format) @@ -228,6 +229,20 @@ Helper::output(); Set an active PhpSpreadsheet Sheet +```php +object setSheet([$sheet] [,$title] [,$normalizeTitle]) +``` + +#### `getSheet()` + +Get PhpSpreadsheet Sheet object from cache + +```php +object getSheet([$identity] [,$autoCreate])` +``` + +Sample code: + ```php use \yidas\phpSpreadsheet\Helper; @@ -237,14 +252,16 @@ Helper::newSpreadsheet() ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], ]); -// Set another sheet object -Helper::setSheet(1, '2nd Sheet') +// Set another sheet object without giving index +Helper::setSheet(null, '2nd Sheet') ->addRow(['Sheet Index', 'Sheet Count']) ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], ]); +// Get a sheet which does not exsit with auto creating it +$obj = Helper::getSheet('3nd Sheet', true); // Set a sheet with the title which has been auto-normalized -Helper::setSheet(2, '*This [sheet] name has been auto-nomalizing', true) +Helper::setSheet(null, '*This [sheet] name has been auto-nomalizing', true) ->addRow(['Sheet Index', 'Sheet Count']) ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], diff --git a/demo/multiple-sheets.php b/demo/multiple-sheets.php index 99247e2..698e380 100644 --- a/demo/multiple-sheets.php +++ b/demo/multiple-sheets.php @@ -10,14 +10,16 @@ ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], ]); -// Set another sheet object -Helper::setSheet(1, '2nd Sheet') +// Set another sheet object without giving index +Helper::setSheet(null, '2nd Sheet') ->addRow(['Sheet Index', 'Sheet Count']) ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], ]); +// Get a sheet which does not exsit with auto creating it +$obj = Helper::getSheet('3nd Sheet', true); // Set a sheet with the title which has been auto-normalized -Helper::setSheet(2, '*This [sheet] name has been auto-nomalizing', true) +Helper::setSheet(null, '*This [sheet] name has been auto-nomalizing', true) ->addRow(['Sheet Index', 'Sheet Count']) ->addRows([ [Helper::getActiveSheetIndex(), Helper::getSheetCount()], diff --git a/src/phpSpreadsheet/Helper.php b/src/phpSpreadsheet/Helper.php index d9b76de..8b524d4 100644 --- a/src/phpSpreadsheet/Helper.php +++ b/src/phpSpreadsheet/Helper.php @@ -184,6 +184,10 @@ public static function setSheet($sheet=0, $title=NULL, $normalizeTitle=false) // Select sheet self::$_objSheet = self::$_objSpreadsheet->setActiveSheetIndex($sheet); } + elseif (is_null($sheet) && self::$_objSpreadsheet) { + // Auto create a sheet without index + self::setSheet(self::getSheetCount()); + } else { throw new Exception("Invalid or empty PhpSpreadsheet Object for setting sheet", 400); } @@ -207,6 +211,46 @@ public static function setSheet($sheet=0, $title=NULL, $normalizeTitle=false) return new static(); } + /** + * Get PhpSpreadsheet Sheet object from cache + * + * @param int|string $identity Sheet index or name + * @param bool $autoCreate + * @return object PhpSpreadsheet Sheet object + */ + public static function getSheet($identity=null, $autoCreate=false) + { + // Deafult is get active sheet + if (!$identity) { + + return self::$_objSheet; + } + + // Giving $identity situation + if (is_numeric($identity)) { + + $objSheet = self::$_objSpreadsheet->getSheet($identity); + // Auto create if not exist + if (!$objSheet && $autoCreate) { + // Create a new sheet by index + $objSheet = self::setSheet($identity) + ->getSheet(); + } + } + elseif (is_string($identity)) { + + $objSheet = self::$_objSpreadsheet->getSheetByName($identity); + // Auto create if not exist + if (!$objSheet && $autoCreate) { + // Create a new sheet by name + $objSheet = self::setSheet(null, $identity, true) + ->getSheet(); + } + } + + return $objSheet; + } + /** * Get sheet count * @@ -227,16 +271,6 @@ public static function getActiveSheetIndex() return self::$_objSpreadsheet->getActiveSheetIndex(); } - /** - * Get PhpSpreadsheet Sheet object from cache - * - * @return object PhpSpreadsheet Sheet object - */ - public static function getSheet() - { - return self::$_objSheet; - } - /** * Set the offset of rows for the actived PhpSpreadsheet Sheet *