Update documentation with details of changes to the StringValueBinder

This commit is contained in:
MarkBaker 2021-06-03 21:32:35 +02:00 committed by Mark Baker
parent 504ed9a87c
commit 488701b748
2 changed files with 14 additions and 2 deletions

View File

@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
### Added ### Added
- Nothing. - More flexibility in the StringValueBinder to determine what datatypes should be treated as strings [PR #2138](https://github.com/PHPOffice/PhpSpreadsheet/pull/2138)
### Changed ### Changed

View File

@ -559,12 +559,24 @@ $spreadsheet->getActiveSheet()->setCellValue('B5', '21 December 1983');
``` ```
Alternatively, a `\PhpOffice\PhpSpreadsheet\Cell\StringValueBinder` class is available Alternatively, a `\PhpOffice\PhpSpreadsheet\Cell\StringValueBinder` class is available
if you want to preserve all string content as strings. This might be appropriate if you if you want to preserve all content as strings. This might be appropriate if you
were loading a file containing values that could be interpreted as numbers (e.g. numbers were loading a file containing values that could be interpreted as numbers (e.g. numbers
with leading sign such as international phone numbers like `+441615579382`), but that with leading sign such as international phone numbers like `+441615579382`), but that
should be retained as strings (non-international phone numbers with leading zeroes are should be retained as strings (non-international phone numbers with leading zeroes are
already maintained as strings). already maintained as strings).
By default, the StringValueBinder will cast any datatype passed to it into a string. However, there are a number of settings which allow you to specify that certain datatypes shouldn't be cast to strings, but left "as is":
```php
// Set value binder
$stringValueBinder = new \PhpOffice\PhpSpreadsheet\Cell\StringValueBinder();
$stringValueBinder->setNumericConversion(false)
->setBooleanConversion(false)
->setNullConversion(false)
->setFormulaConversion(false);
\PhpOffice\PhpSpreadsheet\Cell\Cell::setValueBinder( $stringValueBinder );
```
**Creating your own value binder is relatively straightforward.** When more specialised **Creating your own value binder is relatively straightforward.** When more specialised
value binding is required, you can implement the value binding is required, you can implement the
`\PhpOffice\PhpSpreadsheet\Cell\IValueBinder` interface or extend the existing `\PhpOffice\PhpSpreadsheet\Cell\IValueBinder` interface or extend the existing