Skip to content

Commit ebcc81b

Browse files
authored
Merge pull request #125 from bedus-creation/feature/add-header-from-array
Added addHeaderFromArray method to the SimpleWriter
2 parents c9367b3 + 1dab6ec commit ebcc81b

3 files changed

Lines changed: 35 additions & 0 deletions

File tree

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,19 @@ John,Doe
311311
Jane,Doe
312312
```
313313

314+
#### Manually set the header from array
315+
316+
Instead of automatically let the package dedecting a header row, you can set it manually.
317+
318+
```php
319+
use Spatie\SimpleExcel\SimpleExcelWriter;
320+
321+
$writer = SimpleExcelWriter::create($pathToCsv)
322+
->addHeader(['first_name', 'last_name'])
323+
->addRow(['John', 'Doe'])
324+
->addRow(['Jane', 'Doe'])
325+
```
326+
314327
#### Writing an Excel file
315328

316329
Writing an Excel file is identical to writing a csv. Just make sure that the path given to the `create` method of `SimpleExcelWriter` ends with `xlsx`.

src/SimpleExcelWriter.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,18 @@ public function addRows(iterable $rows, Style $style = null)
127127
return $this;
128128
}
129129

130+
public function addHeader(array $header): self
131+
{
132+
$headerRow = WriterEntityFactory::createRowFromArray($header, $this->headerStyle);
133+
134+
$this->writer->addRow($headerRow);
135+
$this->numberOfRows++;
136+
137+
$this->processingFirstRow = false;
138+
139+
return $this;
140+
}
141+
130142
protected function writeHeaderFromRow(array $row)
131143
{
132144
$headerValues = array_keys($row);

tests/SimpleExcelWriterTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@
6060
assertMatchesFileSnapshot($this->pathToCsv);
6161
});
6262

63+
it('can write the header from array', function () {
64+
$writerWithAutomaticHeader = SimpleExcelWriter::create($this->pathToCsv)
65+
->addHeader(['first_name', 'last_name'])
66+
->addRow(['John', 'Doe']);
67+
68+
expect($writerWithAutomaticHeader->getNumberOfRows())->toEqual(2);
69+
70+
assertMatchesFileSnapshot($this->pathToCsv);
71+
});
72+
6373
it('can write a CSV without a header', function () {
6474
SimpleExcelWriter::create($this->pathToCsv)
6575
->noHeaderRow()

0 commit comments

Comments
 (0)