Skip to content

Commit 79bb68c

Browse files
committed
Implement beforeRender and afterRender events
1 parent e28db92 commit 79bb68c

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ Property | Description
7474
`startColumn` (optional) | The start column name or its 0-based index. When this is set, the 0-based offset is added to all numeric keys used anywhere in this class. Columns referenced by name will stay unchanged. Default is 'A'.
7575
`startRow` (optional) | The start row. Default is 1.
7676

77+
78+
Event | Description
79+
---------|-------------
80+
`beforeRender` | Triggered before the sheet is rendered. The sheet is available via `$event->source->getSheet()`.
81+
`afterRender` | Triggered after the sheet was rendered. The sheet is available via `$event->source->getSheet()`.
82+
83+
7784
### ActiveExcelSheet
7885

7986
The class extends from `ExcelSheet` but differs in the following properties:
@@ -290,3 +297,24 @@ $file = \Yii::createObject([
290297
]);
291298
```
292299

300+
### Events
301+
302+
Since version 2.3.5 there are new events which make it easier to further modify each sheet.
303+
304+
```php
305+
<?php
306+
$file = \Yii::createObject([
307+
'class' => 'codemix\excelexport\ExcelFile',
308+
'sheets' => [
309+
'Users' => [
310+
'class' => 'codemix\excelexport\ActiveExcelSheet',
311+
'query' => User::find(),
312+
'startRow' => 3,
313+
'on beforeRender' => function ($event) {
314+
$sheet = $event->source->getSheet();
315+
$sheet->setCellValue('A1', 'List of current users');
316+
}
317+
],
318+
],
319+
]);
320+
```

src/ExcelSheet.php

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<?php
22
namespace codemix\excelexport;
33

4-
use yii\base\Object;
4+
use yii\base\Component;
55

66
/**
77
* An excel worksheet
88
*/
9-
class ExcelSheet extends Object
9+
class ExcelSheet extends Component
1010
{
11+
const EVENT_BEFORE_RENDER = 'beforeRender';
12+
const EVENT_AFTER_RENDER = 'afterRender';
13+
1114
/**
1215
* @var int|string the start column name or its 0-based index. When this is
1316
* set, the 0-based offset is added to all numeric keys used anywhere in
@@ -184,10 +187,28 @@ public function setCallbacks($value)
184187
*/
185188
public function render()
186189
{
190+
$this->beforeRender();
187191
$this->_row = $this->startRow;
188192
$this->renderStyles();
189193
$this->renderTitle();
190194
$this->renderRows();
195+
$this->trigger(self::EVENT_AFTER_RENDER);
196+
}
197+
198+
/**
199+
* Trigger the [[EVENT_BEFORE_RENDER]] event
200+
*/
201+
public function beforeRender()
202+
{
203+
$this->trigger(self::EVENT_BEFORE_RENDER);
204+
}
205+
206+
/**
207+
* Trigger the [[EVENT_AFTER_RENDER]] event
208+
*/
209+
public function afterRender()
210+
{
211+
$this->trigger(self::EVENT_AFTER_RENDER);
191212
}
192213

193214
/**

0 commit comments

Comments
 (0)