mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-05 06:58:15 +00:00
a7a2fcb83c
Although I have not noticed a problem with mkdocs and relatives, some markdown viewers will, under circumstances that I cannot reliably predict, not render correctly a "fenced" block (starting with 3 backticks) if it is not preceded by a blank line. "Correct" this situation wherever I was able to find it.
75 lines
2.7 KiB
Markdown
75 lines
2.7 KiB
Markdown
# Configuration Settings
|
|
|
|
Once you have included the PhpSpreadsheet files in your script, but
|
|
before instantiating a `Spreadsheet` object or loading a workbook file,
|
|
there are a number of configuration options that can be set which will
|
|
affect the subsequent behaviour of the script.
|
|
|
|
## Cell collection caching
|
|
|
|
By default, PhpSpreadsheet holds all cell objects in memory, but
|
|
you can specify alternatives to reduce memory consumption at the cost of speed.
|
|
Read more about [memory saving](./memory_saving.md).
|
|
|
|
To enable cell caching, you must provide your own implementation of cache like so:
|
|
|
|
```php
|
|
$cache = new MyCustomPsr16Implementation();
|
|
|
|
\PhpOffice\PhpSpreadsheet\Settings::setCache($cache);
|
|
```
|
|
|
|
## Language/Locale
|
|
|
|
Some localisation elements have been included in PhpSpreadsheet. You can
|
|
set a locale by changing the settings. To set the locale to Brazilian
|
|
Portuguese you would use:
|
|
|
|
```php
|
|
$locale = 'pt_br';
|
|
$validLocale = \PhpOffice\PhpSpreadsheet\Settings::setLocale($locale);
|
|
if (!$validLocale) {
|
|
echo 'Unable to set locale to ' . $locale . " - reverting to en_us" . PHP_EOL;
|
|
}
|
|
```
|
|
|
|
- If Brazilian Portuguese language files aren't available, then Portuguese
|
|
will be enabled instead
|
|
- If Portuguese language files also aren't available,
|
|
then the `setLocale` method will return `false`, and American English
|
|
(en\_us) settings will be used throughout.
|
|
|
|
More details of the features available once a locale has been set,
|
|
including a list of the languages and locales currently supported, can
|
|
be found in [Locale Settings for
|
|
Formulas](./recipes.md#locale-settings-for-formulas).
|
|
|
|
Additional localization elements (currency code, thousands separator, and decimal separator) are available in `PhpOffice\PhpSpreadsheet\Shared\StringHelper`:
|
|
|
|
```php
|
|
StringHelper::setCurrencyCode('€');
|
|
StringHelper::setThousandsSeparator('.');
|
|
StringHelper::setDecimalSeparator(',');
|
|
```
|
|
|
|
You can use the Php function `setLocale` to try to set these values
|
|
without knowing beforehand what symbols are needed.
|
|
```php
|
|
StringHelper::setCurrencyCode(null);
|
|
StringHelper::setThousandsSeparator(null);
|
|
StringHelper::setDecimalSeparator(null);
|
|
$result = setLocale(LC_ALL, 'pt_br.UTF-8');
|
|
```
|
|
However, this function maintains its information at the process level, not the thread level,
|
|
and its use is therefore discouraged.
|
|
|
|
A less-troublesome replacement is available starting with PhpSpreadsheet 5.4.
|
|
|
|
```php
|
|
$result = StringHelper::setLocale('pt_br'); // will restore defaults if argument is null
|
|
```
|
|
This will set the locale and the 3 StringHelper values all at once.
|
|
It requires the `Intl` extension, which is not a requirement for PhpSpreadsheet as a whole.
|
|
For that reason, it returns a boolean result, which will be `false`
|
|
if `Intl` is not available, or if it does not consider the supplied locale to be valid.
|