Skip to content

Commit

Permalink
Enhance getSheet() with identity features with auto setSheet()
Browse files Browse the repository at this point in the history
  • Loading branch information
yidas committed Apr 27, 2018
1 parent c7c6998 commit 917987b
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 16 deletions.
23 changes: 20 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;

Expand All @@ -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()],
Expand Down
8 changes: 5 additions & 3 deletions demo/multiple-sheets.php
Original file line number Diff line number Diff line change
Expand Up @@ -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()],
Expand Down
54 changes: 44 additions & 10 deletions src/phpSpreadsheet/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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
*
Expand All @@ -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
*
Expand Down

0 comments on commit 917987b

Please sign in to comment.