initial commit of SVN release repo
2
inc/vendor/phpoffice/phpspreadsheet/.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/tests export-ignore
|
||||
README.md export-ignore
|
31
inc/vendor/phpoffice/phpspreadsheet/.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
This is:
|
||||
|
||||
```
|
||||
- [ ] a bug report
|
||||
- [ ] a feature request
|
||||
- [ ] **not** a usage question (ask them on https://stackoverflow.com/questions/tagged/phpspreadsheet or https://gitter.im/PHPOffice/PhpSpreadsheet)
|
||||
```
|
||||
|
||||
### What is the expected behavior?
|
||||
|
||||
|
||||
### What is the current behavior?
|
||||
|
||||
|
||||
### What are the steps to reproduce?
|
||||
|
||||
Please provide a [Minimal, Complete, and Verifiable example](http://stackoverflow.com/help/mcve) of code that exhibits the issue without relying on an external Excel file or a web server:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
|
||||
// add code that show the issue here...
|
||||
```
|
||||
|
||||
|
||||
### Which versions of PhpSpreadsheet and PHP are affected?
|
16
inc/vendor/phpoffice/phpspreadsheet/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
This is:
|
||||
|
||||
```
|
||||
- [ ] a bugfix
|
||||
- [ ] a new feature
|
||||
```
|
||||
|
||||
Checklist:
|
||||
|
||||
- [ ] Changes are covered by unit tests
|
||||
- [ ] Code style is respected
|
||||
- [ ] Commit message explains **why** the change is made (see https://github.com/erlang/otp/wiki/Writing-good-commit-messages)
|
||||
- [ ] CHANGELOG.md contains a short summary of the change
|
||||
- [ ] Documentation is updated as necessary
|
||||
|
||||
### Why this change is needed?
|
22
inc/vendor/phpoffice/phpspreadsheet/.github/stale.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs.
|
||||
|
||||
If this is still an issue for you, please try to help by debugging it
|
||||
further and sharing your results.
|
||||
|
||||
Thank you for your contributions.
|
||||
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
15
inc/vendor/phpoffice/phpspreadsheet/.github/support.yml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# Label used to mark issues as support requests
|
||||
supportLabel: question
|
||||
# Comment to post on issues marked as support requests. Add a link
|
||||
# to a support page, or set to `false` to disable
|
||||
supportComment: >
|
||||
This looks like a support question. Please ask your support questions on
|
||||
[StackOverflow](http://stackoverflow.com/questions/tagged/phpspreadsheet),
|
||||
or [Gitter](https://gitter.im/PHPOffice/PhpSpreadsheet).
|
||||
|
||||
Thank you for your contributions.
|
||||
|
||||
# Whether to close issues marked as support requests
|
||||
close: true
|
||||
# Whether to lock issues marked as support requests
|
||||
lock: false
|
11
inc/vendor/phpoffice/phpspreadsheet/.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
/tests/codeCoverage
|
||||
/analysis
|
||||
/vendor/
|
||||
/phpunit.xml
|
||||
/.php_cs.cache
|
||||
|
||||
## IDE support
|
||||
*.buildpath
|
||||
*.project
|
||||
/.settings
|
||||
/.idea
|
181
inc/vendor/phpoffice/phpspreadsheet/.php_cs.dist
vendored
Normal file
@ -0,0 +1,181 @@
|
||||
<?php
|
||||
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
->exclude('vendor')
|
||||
->in('samples')
|
||||
->in('src')
|
||||
->in('tests');
|
||||
|
||||
return PhpCsFixer\Config::create()
|
||||
->setRiskyAllowed(true)
|
||||
->setFinder($finder)
|
||||
->setRules([
|
||||
'align_multiline_comment' => true,
|
||||
'array_syntax' => ['syntax' => 'short'],
|
||||
'backtick_to_shell_exec' => true,
|
||||
'binary_operator_spaces' => true,
|
||||
'blank_line_after_namespace' => true,
|
||||
'blank_line_after_opening_tag' => true,
|
||||
'blank_line_before_statement' => true,
|
||||
'braces' => true,
|
||||
'cast_spaces' => true,
|
||||
'class_attributes_separation' => ['elements' => ['method', 'property']], // const are often grouped with other related const
|
||||
'class_definition' => true,
|
||||
'class_keyword_remove' => false, // ::class keyword gives us beter support in IDE
|
||||
'combine_consecutive_issets' => true,
|
||||
'combine_consecutive_unsets' => true,
|
||||
'compact_nullable_typehint' => true,
|
||||
'concat_space' => ['spacing' => 'one'],
|
||||
'declare_equal_normalize' => true,
|
||||
'declare_strict_types' => false, // Too early to adopt strict types
|
||||
'dir_constant' => true,
|
||||
'doctrine_annotation_array_assignment' => true,
|
||||
'doctrine_annotation_braces' => true,
|
||||
'doctrine_annotation_indentation' => true,
|
||||
'doctrine_annotation_spaces' => true,
|
||||
'elseif' => true,
|
||||
'encoding' => true,
|
||||
'ereg_to_preg' => true,
|
||||
'escape_implicit_backslashes' => true,
|
||||
'explicit_indirect_variable' => false, // I feel it makes the code actually harder to read
|
||||
'explicit_string_variable' => false, // I feel it makes the code actually harder to read
|
||||
'final_internal_class' => true,
|
||||
'full_opening_tag' => true,
|
||||
'function_declaration' => true,
|
||||
'function_to_constant' => true,
|
||||
'function_typehint_space' => true,
|
||||
'general_phpdoc_annotation_remove' => false, // No use for that
|
||||
'hash_to_slash_comment' => true,
|
||||
'header_comment' => false, // We don't use common header in all our files
|
||||
'heredoc_to_nowdoc' => false, // Not sure about this one
|
||||
'include' => true,
|
||||
'increment_style' => true,
|
||||
'indentation_type' => true,
|
||||
'is_null' => ['use_yoda_style' => false],
|
||||
'linebreak_after_opening_tag' => true,
|
||||
'line_ending' => true,
|
||||
'list_syntax' => ['syntax' => 'long'], // Stay compatiblew with PHP 5.6
|
||||
'lowercase_cast' => true,
|
||||
'lowercase_constants' => true,
|
||||
'lowercase_keywords' => true,
|
||||
'magic_constant_casing' => true,
|
||||
'mb_str_functions' => false, // No, too dangerous to change that
|
||||
'method_argument_space' => true,
|
||||
'method_chaining_indentation' => true,
|
||||
'method_separation' => true,
|
||||
'modernize_types_casting' => true,
|
||||
'multiline_comment_opening_closing' => true,
|
||||
'native_function_casing' => true,
|
||||
'native_function_invocation' => false, // This is risky and seems to be micro-optimization that make code uglier so not worth it, at least for now
|
||||
'new_with_braces' => true,
|
||||
'no_alias_functions' => true,
|
||||
'no_blank_lines_after_class_opening' => true,
|
||||
'no_blank_lines_after_phpdoc' => true,
|
||||
'no_blank_lines_before_namespace' => false, // we want 1 blank line before namespace
|
||||
'no_break_comment' => true,
|
||||
'no_closing_tag' => true,
|
||||
'no_empty_comment' => true,
|
||||
'no_empty_phpdoc' => true,
|
||||
'no_empty_statement' => true,
|
||||
'no_extra_blank_lines' => true,
|
||||
'no_homoglyph_names' => true,
|
||||
'no_leading_import_slash' => true,
|
||||
'no_leading_namespace_whitespace' => true,
|
||||
'no_mixed_echo_print' => true,
|
||||
'no_multiline_whitespace_around_double_arrow' => true,
|
||||
'no_multiline_whitespace_before_semicolons' => true,
|
||||
'non_printable_character' => true,
|
||||
'no_null_property_initialization' => true,
|
||||
'no_php4_constructor' => true,
|
||||
'normalize_index_brace' => true,
|
||||
'no_short_bool_cast' => true,
|
||||
'no_short_echo_tag' => true,
|
||||
'no_singleline_whitespace_before_semicolons' => true,
|
||||
'no_spaces_after_function_name' => true,
|
||||
'no_spaces_around_offset' => true,
|
||||
'no_spaces_inside_parenthesis' => true,
|
||||
'no_superfluous_elseif' => false, // Might be risky on a huge code base
|
||||
'not_operator_with_space' => false, // No we prefer to keep '!' without spaces
|
||||
'not_operator_with_successor_space' => false, // idem
|
||||
'no_trailing_comma_in_list_call' => true,
|
||||
'no_trailing_comma_in_singleline_array' => true,
|
||||
'no_trailing_whitespace_in_comment' => true,
|
||||
'no_trailing_whitespace' => true,
|
||||
'no_unneeded_control_parentheses' => true,
|
||||
'no_unneeded_curly_braces' => true,
|
||||
'no_unneeded_final_method' => true,
|
||||
'no_unreachable_default_argument_value' => true,
|
||||
'no_unused_imports' => true,
|
||||
'no_useless_else' => true,
|
||||
'no_useless_return' => true,
|
||||
'no_whitespace_before_comma_in_array' => true,
|
||||
'no_whitespace_in_blank_line' => true,
|
||||
'object_operator_without_whitespace' => true,
|
||||
'ordered_class_elements' => false, // We prefer to keep some freedom
|
||||
'ordered_imports' => true,
|
||||
'phpdoc_add_missing_param_annotation' => true,
|
||||
'phpdoc_align' => false, // Waste of time
|
||||
'phpdoc_annotation_without_dot' => true,
|
||||
'phpdoc_indent' => true,
|
||||
'phpdoc_inline_tag' => true,
|
||||
'phpdoc_no_access' => true,
|
||||
'phpdoc_no_alias_tag' => true,
|
||||
'phpdoc_no_empty_return' => true,
|
||||
'phpdoc_no_package' => true,
|
||||
'phpdoc_no_useless_inheritdoc' => true,
|
||||
'phpdoc_order' => true,
|
||||
'phpdoc_return_self_reference' => true,
|
||||
'phpdoc_scalar' => true,
|
||||
'phpdoc_separation' => true,
|
||||
'phpdoc_single_line_var_spacing' => true,
|
||||
'phpdoc_summary' => true,
|
||||
'phpdoc_to_comment' => true,
|
||||
'phpdoc_trim' => true,
|
||||
'phpdoc_types_order' => true,
|
||||
'phpdoc_types' => true,
|
||||
'phpdoc_var_without_name' => true,
|
||||
'php_unit_construct' => true,
|
||||
'php_unit_dedicate_assert' => true,
|
||||
'php_unit_expectation' => true,
|
||||
'php_unit_fqcn_annotation' => true,
|
||||
'php_unit_mock' => true,
|
||||
'php_unit_namespaced' => true,
|
||||
'php_unit_no_expectation_annotation' => true,
|
||||
'php_unit_strict' => false, // We sometime actually need assertEquals
|
||||
'php_unit_test_annotation' => true,
|
||||
'php_unit_test_class_requires_covers' => false, // We don't care as much as we should about coverage
|
||||
'pow_to_exponentiation' => false,
|
||||
'protected_to_private' => true,
|
||||
'psr0' => true,
|
||||
'psr4' => true,
|
||||
'random_api_migration' => false, // This breaks our unit tests
|
||||
'return_type_declaration' => true,
|
||||
'self_accessor' => true,
|
||||
'semicolon_after_instruction' => false, // Buggy in `samples/index.php`
|
||||
'short_scalar_cast' => true,
|
||||
'silenced_deprecation_error' => true,
|
||||
'simplified_null_return' => false, // While technically correct we prefer to be explicit when returning null
|
||||
'single_blank_line_at_eof' => true,
|
||||
'single_blank_line_before_namespace' => true,
|
||||
'single_class_element_per_statement' => true,
|
||||
'single_import_per_statement' => true,
|
||||
'single_line_after_imports' => true,
|
||||
'single_line_comment_style' => true,
|
||||
'single_quote' => true,
|
||||
'space_after_semicolon' => true,
|
||||
'standardize_not_equals' => true,
|
||||
'static_lambda' => false, // Risky if we can't guarantee nobody use `bindTo()`
|
||||
'strict_comparison' => false, // No, too dangerous to change that
|
||||
'strict_param' => false, // No, too dangerous to change that
|
||||
'switch_case_semicolon_to_colon' => true,
|
||||
'switch_case_space' => true,
|
||||
'ternary_operator_spaces' => true,
|
||||
'ternary_to_null_coalescing' => false, // Cannot use that with PHP 5.6
|
||||
'trailing_comma_in_multiline_array' => true,
|
||||
'trim_array_spaces' => true,
|
||||
'unary_operator_spaces' => true,
|
||||
'visibility_required' => true,
|
||||
'void_return' => false, // Cannot use that with PHP 5.6
|
||||
'whitespace_after_comma_in_array' => true,
|
||||
'yoda_style' => false,
|
||||
]);
|
27
inc/vendor/phpoffice/phpspreadsheet/.scrutinizer.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
checks:
|
||||
php: true
|
||||
|
||||
coding_style:
|
||||
php:
|
||||
spaces:
|
||||
before_parentheses:
|
||||
closure_definition: true
|
||||
around_operators:
|
||||
concatenation: true
|
||||
|
||||
build:
|
||||
nodes:
|
||||
analysis:
|
||||
tests:
|
||||
override:
|
||||
- php-scrutinizer-run
|
||||
|
||||
tools:
|
||||
external_code_coverage:
|
||||
timeout: 3600
|
||||
|
||||
build_failure_conditions:
|
||||
- 'elements.rating(<= C).new.exists' # No new classes/methods with a rating of C or worse allowed
|
||||
- 'issues.severity(>= MAJOR).new.exists' # New issues of major or higher severity
|
||||
- 'project.metric_change("scrutinizer.test_coverage", < 0)' # Code Coverage decreased from previous inspection
|
||||
- 'patches.label("Unused Use Statements").new.exists' # No new unused imports patches allowed
|
40
inc/vendor/phpoffice/phpspreadsheet/.travis.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
language: php
|
||||
dist: trusty
|
||||
sudo: false
|
||||
|
||||
php:
|
||||
- 5.6
|
||||
- 7.0
|
||||
- 7.1
|
||||
- 7.2
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- vendor
|
||||
- $HOME/.composer/cache
|
||||
|
||||
before_script:
|
||||
# Deactivate xdebug
|
||||
- if [ -z "$KEEP_XDEBUG" ]; then rm -rfv /home/travis/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ; fi
|
||||
- composer install --ignore-platform-reqs
|
||||
|
||||
script:
|
||||
- ./vendor/bin/phpunit
|
||||
|
||||
jobs:
|
||||
include:
|
||||
|
||||
- stage: Code style
|
||||
php: 7.1
|
||||
script:
|
||||
- ./vendor/bin/php-cs-fixer fix --diff --verbose --dry-run
|
||||
- ./vendor/bin/phpcs --report-width=200 --report-summary --report-full samples/ src/ tests/ --ignore=samples/Header.php --standard=PSR2 -n
|
||||
|
||||
- stage: Coverage
|
||||
php: 7.1
|
||||
env: KEEP_XDEBUG=1
|
||||
script:
|
||||
- ./vendor/bin/phpunit --debug --coverage-clover coverage-clover.xml
|
||||
after_script:
|
||||
- wget https://scrutinizer-ci.com/ocular.phar
|
||||
- php ocular.phar code-coverage:upload --format=php-clover tests/coverage-clover.xml
|
1593
inc/vendor/phpoffice/phpspreadsheet/CHANGELOG.PHPExcel.md
vendored
Normal file
124
inc/vendor/phpoffice/phpspreadsheet/CHANGELOG.md
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [1.1.0] - 2018-01-28
|
||||
|
||||
### Added
|
||||
|
||||
- Support for PHP 7.2
|
||||
- Support cell comments in HTML writer and reader - [#308](https://github.com/PHPOffice/PhpSpreadsheet/issues/308)
|
||||
- Option to stop at a conditional styling, if it matches (only XLSX format) - [#292](https://github.com/PHPOffice/PhpSpreadsheet/pull/292)
|
||||
- Support for line width for data series when rendering Xlsx - [#329](https://github.com/PHPOffice/PhpSpreadsheet/pull/329)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Better auto-detection of CSV separators - [#305](https://github.com/PHPOffice/PhpSpreadsheet/issues/305)
|
||||
- Support for shape style ending with `;` - [#304](https://github.com/PHPOffice/PhpSpreadsheet/issues/304)
|
||||
- Freeze Panes takes wrong coordinates for XLSX - [#322](https://github.com/PHPOffice/PhpSpreadsheet/issues/322)
|
||||
- `COLUMNS` and `ROWS` functions crashed in some cases - [#336](https://github.com/PHPOffice/PhpSpreadsheet/issues/336)
|
||||
- Support XML file without styles - [#331](https://github.com/PHPOffice/PhpSpreadsheet/pull/331)
|
||||
- Cell coordinates which are already a range cause an exception [#319](https://github.com/PHPOffice/PhpSpreadsheet/issues/319)
|
||||
|
||||
## [1.0.0] - 2017-12-25
|
||||
|
||||
### Added
|
||||
|
||||
- Support to write merged cells in ODS format - [#287](https://github.com/PHPOffice/PhpSpreadsheet/issues/287)
|
||||
- Able to set the `topLeftCell` in freeze panes - [#261](https://github.com/PHPOffice/PhpSpreadsheet/pull/261)
|
||||
- Support `DateTimeImmutable` as cell value
|
||||
- Support migration of prefixed classes
|
||||
|
||||
### Fixed
|
||||
|
||||
- Can read very small HTML files - [#194](https://github.com/PHPOffice/PhpSpreadsheet/issues/194)
|
||||
- Written DataValidation was corrupted - [#290](https://github.com/PHPOffice/PhpSpreadsheet/issues/290)
|
||||
- Date format compatible with both LibreOffice and Excel - [#298](https://github.com/PHPOffice/PhpSpreadsheet/issues/298)
|
||||
|
||||
### BREAKING CHANGE
|
||||
|
||||
- Constant `TYPE_DOUGHTNUTCHART` is now `TYPE_DOUGHNUTCHART`.
|
||||
|
||||
## [1.0.0-beta2] - 2017-11-26
|
||||
|
||||
### Added
|
||||
|
||||
- Support for chart fill color - @CrazyBite [#158](https://github.com/PHPOffice/PhpSpreadsheet/pull/158)
|
||||
- Support for read Hyperlink for xml - @GreatHumorist [#223](https://github.com/PHPOffice/PhpSpreadsheet/pull/223)
|
||||
- Support for cell value validation according to data validation rules - @SailorMax [#257](https://github.com/PHPOffice/PhpSpreadsheet/pull/257)
|
||||
- Support for custom implementation, or configuration, of PDF libraries - @SailorMax [#266](https://github.com/PHPOffice/PhpSpreadsheet/pull/266)
|
||||
|
||||
### Changed
|
||||
|
||||
- Merge data-validations to reduce written worksheet size - @billblume [#131](https://github.com/PHPOffice/PhpSpreadSheet/issues/131)
|
||||
- Throws exception if a XML file is invalid - @GreatHumorist [#222](https://github.com/PHPOffice/PhpSpreadsheet/pull/222)
|
||||
- Upgrade to mPDF 7.0+ - [#144](https://github.com/PHPOffice/PhpSpreadsheet/issues/144)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Control characters in cell values are automatically escaped - [#212](https://github.com/PHPOffice/PhpSpreadsheet/issues/212)
|
||||
- Prevent color changing when copy/pasting xls files written by PhpSpreadsheet to another file - @al-lala [#218](https://github.com/PHPOffice/PhpSpreadsheet/issues/218)
|
||||
- Add cell reference automatic when there is no cell reference('r' attribute) in Xlsx file. - @GreatHumorist [#225](https://github.com/PHPOffice/PhpSpreadsheet/pull/225) Refer to [issue#201](https://github.com/PHPOffice/PhpSpreadsheet/issues/201)
|
||||
- `Reader\Xlsx::getFromZipArchive()` function return false if the zip entry could not be located. - @anton-harvey [#268](https://github.com/PHPOffice/PhpSpreadsheet/pull/268)
|
||||
|
||||
### BREAKING CHANGE
|
||||
|
||||
- Extracted coordinate method to dedicate class [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
- Column indexes are based on 1, see the [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
- Standardization of array keys used for style, see the [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
- Easier usage of PDF writers, and other custom readers and writers, see the [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
- Easier usage of chart renderers, see the [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
- Rename a few more classes to keep them in their related namespaces:
|
||||
- `CalcEngine` => `Calculation\Engine`
|
||||
- `PhpSpreadsheet\Calculation` => `PhpSpreadsheet\Calculation\Calculation`
|
||||
- `PhpSpreadsheet\Cell` => `PhpSpreadsheet\Cell\Cell`
|
||||
- `PhpSpreadsheet\Chart` => `PhpSpreadsheet\Chart\Chart`
|
||||
- `PhpSpreadsheet\RichText` => `PhpSpreadsheet\RichText\RichText`
|
||||
- `PhpSpreadsheet\Style` => `PhpSpreadsheet\Style\Style`
|
||||
- `PhpSpreadsheet\Worksheet` => `PhpSpreadsheet\Worksheet\Worksheet`
|
||||
|
||||
## [1.0.0-beta] - 2017-08-17
|
||||
|
||||
### Added
|
||||
|
||||
- Initial implementation of SUMIFS() function
|
||||
- Additional codepages
|
||||
- MemoryDrawing not working in HTML writer [#808](https://github.com/PHPOffice/PHPExcel/issues/808)
|
||||
- CSV Reader can auto-detect the separator used in file [#141](https://github.com/PHPOffice/PhpSpreadsheet/pull/141)
|
||||
- HTML Reader supports some basic inline styles [#180](https://github.com/PHPOffice/PhpSpreadsheet/pull/180)
|
||||
|
||||
### Changed
|
||||
|
||||
- Start following [SemVer](http://semver.org) properly.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix to getCell() method when cell reference includes a worksheet reference - @MarkBaker
|
||||
- Ignore inlineStr type if formula element exists - @ncrypthic [#570](https://github.com/PHPOffice/PHPExcel/issues/570)
|
||||
- Excel 2007 Reader freezes because of conditional formatting - @rentalhost [#575](https://github.com/PHPOffice/PHPExcel/issues/575)
|
||||
- Readers will now parse files containing worksheet titles over 31 characters [#176](https://github.com/PHPOffice/PhpSpreadsheet/pull/176)
|
||||
|
||||
### General
|
||||
|
||||
- Whitespace after toRichTextObject() - @MarkBaker [#554](https://github.com/PHPOffice/PHPExcel/issues/554)
|
||||
- Optimize vlookup() sort - @umpirsky [#548](https://github.com/PHPOffice/PHPExcel/issues/548)
|
||||
- c:max and c:min elements shall NOT be inside c:orientation elements - @vitalyrepin [#869](https://github.com/PHPOffice/PHPExcel/pull/869)
|
||||
- Implement actual timezone adjustment into PHPExcel_Shared_Date::PHPToExcel - @sim642 [#489](https://github.com/PHPOffice/PHPExcel/pull/489)
|
||||
|
||||
### BREAKING CHANGE
|
||||
|
||||
- Introduction of namespaces for all classes, eg: `PHPExcel_Calculation_Functions` becomes `PhpOffice\PhpSpreadsheet\Calculation\Functions`
|
||||
- Some classes were renamed for clarity and/or consistency:
|
||||
|
||||
For a comprehensive list of all class changes, and a semi-automated migration path, read the [migration guide](./docs/topics/migration-from-PHPExcel.md).
|
||||
|
||||
- Dropped `PHPExcel_Calculation_Functions::VERSION()`. Composer or git should be used to know the version.
|
||||
- Dropped `PHPExcel_Settings::setPdfRenderer()` and `PHPExcel_Settings::setPdfRenderer()`. Composer should be used to autoload PDF libs.
|
||||
- Dropped support for HHVM
|
||||
|
||||
## Previous versions of PHPExcel
|
||||
|
||||
The changelog for the project when it was called PHPExcel is [still available](./CHANGELOG.PHPExcel.md).
|
11
inc/vendor/phpoffice/phpspreadsheet/CONTRIBUTING.md
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# Want to contribute?
|
||||
|
||||
If you would like to contribute, here are some notes and guidelines:
|
||||
|
||||
- All new development happens on feature/fix branches referenced with the GitHub issue number, and are then merged to the develop branch; so the develop branch is always the most up-to-date, working code
|
||||
- The master branch only contains tagged releases
|
||||
- If you are going to be submitting a pull request, please fork from develop, and submit your pull request back as a fix/feature branch referencing the GitHub issue number
|
||||
- Code style might be automatically fixed by `composer fix`
|
||||
- All code changes must be validated by `composer check`
|
||||
- [Helpful article about forking](https://help.github.com/articles/fork-a-repo/ "Forking a GitHub repository")
|
||||
- [Helpful article about pull requests](https://help.github.com/articles/using-pull-requests/ "Pull Requests")
|
345
inc/vendor/phpoffice/phpspreadsheet/LICENSE
vendored
Normal file
@ -0,0 +1,345 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
8
inc/vendor/phpoffice/phpspreadsheet/bin/migrate-from-phpexcel
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Migrator;
|
||||
|
||||
require_once __DIR__ . '/../src/Bootstrap.php';
|
||||
|
||||
$migrator = new Migrator();
|
||||
$migrator->migrate();
|
33
inc/vendor/phpoffice/phpspreadsheet/bin/pre-commit
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
pass=true
|
||||
|
||||
files=$(git diff --cached --name-only --diff-filter=ACMR | grep -E '\.(php|phtml)$')
|
||||
if [ "$files" != "" ]; then
|
||||
|
||||
# Run php syntax check before commit
|
||||
while read -r file; do
|
||||
php -l "$file"
|
||||
if [ $? -ne 0 ]; then
|
||||
pass=false
|
||||
fi
|
||||
done <<< "$files"
|
||||
|
||||
# Run php-cs-fixer validation before commit
|
||||
echo "$files" | xargs ./vendor/bin/php-cs-fixer fix --diff --config .php_cs.dist
|
||||
if [ $? -ne 0 ]; then
|
||||
pass=false
|
||||
fi
|
||||
|
||||
# Automatically add files that may have been fixed by php-cs-fixer
|
||||
echo "$files" | xargs git add
|
||||
fi
|
||||
|
||||
if $pass; then
|
||||
exit 0
|
||||
else
|
||||
echo ""
|
||||
echo "PRE-COMMIT HOOK FAILED:"
|
||||
echo "Code style validation failed. Please fix errors and try committing again."
|
||||
exit 1
|
||||
fi
|
78
inc/vendor/phpoffice/phpspreadsheet/composer.json
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"name": "phpoffice/phpspreadsheet",
|
||||
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
|
||||
"keywords": ["PHP", "OpenXML", "Excel", "xlsx", "xls", "ods", "gnumeric", "spreadsheet"],
|
||||
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
|
||||
"type": "library",
|
||||
"license": "LGPL-2.1",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Maarten Balliauw",
|
||||
"homepage": "http://blog.maartenballiauw.be"
|
||||
},
|
||||
{
|
||||
"name": "Mark Baker",
|
||||
"homepage": "http://markbakeruk.net"
|
||||
},
|
||||
{
|
||||
"name": "Franck Lefevre",
|
||||
"homepage": "http://rootslabs.net"
|
||||
},
|
||||
{
|
||||
"name": "Erik Tilt"
|
||||
}
|
||||
],
|
||||
"scripts": {
|
||||
"check": [
|
||||
"php-cs-fixer fix --ansi --dry-run --diff",
|
||||
"phpcs --report-width=200 --report-summary --report-full samples/ src/ tests/ --ignore=samples/Header.php --standard=PSR2 -n",
|
||||
"phpunit --color=always"
|
||||
],
|
||||
"fix": [
|
||||
"php-cs-fixer fix --ansi"
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6|^7.0",
|
||||
"ext-ctype": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-iconv": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-SimpleXML": "*",
|
||||
"ext-xml": "*",
|
||||
"ext-xmlreader": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"ext-zip": "*",
|
||||
"ext-zlib": "*",
|
||||
"psr/simple-cache": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"tecnickcom/tcpdf": "^6.2",
|
||||
"squizlabs/php_codesniffer": "^2.7",
|
||||
"phpunit/phpunit": "^5.7",
|
||||
"dompdf/dompdf": "^0.8.0",
|
||||
"mpdf/mpdf": "^7.0.0",
|
||||
"jpgraph/jpgraph": "^4.0",
|
||||
"friendsofphp/php-cs-fixer": "@stable"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-gd": "Required for exact column width autocalculation",
|
||||
"ext-dom": "Option to read and write HTML files",
|
||||
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
|
||||
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
|
||||
"tecnick.com/tcpdf": "Option for rendering PDF with PDF Writer",
|
||||
"jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"PhpOffice\\PhpSpreadsheetTests\\": "tests/PhpSpreadsheetTests"
|
||||
}
|
||||
}
|
||||
}
|
3103
inc/vendor/phpoffice/phpspreadsheet/composer.lock
generated
vendored
Normal file
51
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Architecture.cd
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
<Class Name="ClassDiagrams.PHPExcel" Collapsed="true">
|
||||
<Position X="3.5" Y="0.5" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Classes\PHPExcel.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
<ShowAsAssociation>
|
||||
<Property Name="Worksheets" />
|
||||
</ShowAsAssociation>
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.Worksheet" Collapsed="true">
|
||||
<Position X="0.5" Y="0.5" Width="1.5" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Classes\Worksheet.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
</Class>
|
||||
<Interface Name="ClassDiagrams.PHPExcel_Reader_IReader" Collapsed="true">
|
||||
<Position X="2.25" Y="2.5" Width="2" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Classes\IReader.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
<ShowAsAssociation>
|
||||
<Property Name="reads" />
|
||||
</ShowAsAssociation>
|
||||
<AssociationLine Name="reads" Type="ClassDiagrams.PHPExcel">
|
||||
<MemberNameLabel ManuallyPlaced="true" ManuallySized="true">
|
||||
<Position X="0.152" Y="1.279" Height="0.16" Width="0.597" />
|
||||
</MemberNameLabel>
|
||||
</AssociationLine>
|
||||
</Interface>
|
||||
<Interface Name="ClassDiagrams.PHPExcel_Writer_IWriter" Collapsed="true">
|
||||
<Position X="4.5" Y="2.5" Width="2" />
|
||||
<TypeIdentifier>
|
||||
<FileName>Classes\IWriter.cs</FileName>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
</TypeIdentifier>
|
||||
<ShowAsAssociation>
|
||||
<Property Name="writes" />
|
||||
</ShowAsAssociation>
|
||||
<AssociationLine Name="writes" Type="ClassDiagrams.PHPExcel">
|
||||
<MemberNameLabel ManuallyPlaced="true" ManuallySized="true">
|
||||
<Position X="-1.002" Y="1.298" Height="0.16" Width="0.764" />
|
||||
</MemberNameLabel>
|
||||
</AssociationLine>
|
||||
</Interface>
|
||||
</ClassDiagram>
|
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Architecture.png
vendored
Normal file
After Width: | Height: | Size: 16 KiB |
64
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/ClassDiagrams.csproj
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ClassDiagrams</RootNamespace>
|
||||
<AssemblyName>ClassDiagrams</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<None Include="Architecture.cd" />
|
||||
<None Include="ReaderWriter.cd" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\IReader.cs" />
|
||||
<Compile Include="Classes\IWriter.cs" />
|
||||
<Compile Include="Classes\PHPExcel_IOFactory.cs" />
|
||||
<Compile Include="Classes\Worksheet.cs" />
|
||||
<Compile Include="Classes\PHPExcel.cs" />
|
||||
<Compile Include="Classes\PHPExcel_Reader_Excel2007.cs" />
|
||||
<Compile Include="Classes\PHPExcel_Reader_Serialized.cs" />
|
||||
<Compile Include="Classes\PHPExcel_Writer_Excel2007.cs" />
|
||||
<Compile Include="Classes\PHPExcel_Writer_Serialized.cs" />
|
||||
<Compile Include="Classes\PHPExcel_Reader_Excel5.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Exports\Architecture.png" />
|
||||
<Content Include="Exports\ReaderWriter.png" />
|
||||
</ItemGroup>
|
||||
</Project>
|
5
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/ClassDiagrams.csproj.user
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
</Project>
|
20
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/ClassDiagrams.sln
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagrams", "ClassDiagrams.csproj", "{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CC8CD7D2-8EFF-48E5-A17A-C1C482744D31}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
15
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/IReader.cs
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public interface PHPExcel_Reader_IReader
|
||||
{
|
||||
PHPExcel reads
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
15
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/IWriter.cs
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public interface PHPExcel_Writer_IWriter
|
||||
{
|
||||
PHPExcel writes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
40
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/PHPExcel.cs
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel
|
||||
{
|
||||
/// <remarks></remarks>
|
||||
public Worksheet Worksheets
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class PHPExcel_Writer_PDF : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region PHPExcel_Writer_IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
41
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/PHPExcel_IOFactory.cs
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_IOFactory
|
||||
{
|
||||
public PHPExcel_Reader_IReader createsReader
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public PHPExcel_Writer_IWriter createsWriter
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
set
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public PHPExcel_Writer_IWriter createWriter()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public PHPExcel_Reader_IReader createReader()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_Reader_Excel2007 : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
63
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/PHPExcel_Reader_Excel5.cs
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_Reader_Excel5 : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region PHPExcel_Writer_IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Reader_Excel2003XML : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region PHPExcel_Writer_IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Reader_SYLK : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region PHPExcel_Writer_IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_Reader_Serialized : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Reader_CSV : PHPExcel_Reader_IReader
|
||||
{
|
||||
#region IReader Members
|
||||
|
||||
public PHPExcel reads
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_Writer_Excel2007 : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class PHPExcel_Writer_Serialized : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Writer_CSV : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Writer_Excel5 : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PHPExcel_Writer_HTML : PHPExcel_Writer_IWriter
|
||||
{
|
||||
#region IWriter Members
|
||||
|
||||
public PHPExcel writes
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("The method or operation is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
14
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Classes/Worksheet.cs
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ClassDiagrams
|
||||
{
|
||||
public class Worksheet
|
||||
{
|
||||
}
|
||||
|
||||
public class CopyOfWorksheet
|
||||
{
|
||||
}
|
||||
}
|
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Exports/Architecture.png
vendored
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/Exports/ReaderWriter.png
vendored
Normal file
After Width: | Height: | Size: 45 KiB |
135
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/ReaderWriter.cd
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ClassDiagram MajorVersion="1" MinorVersion="1">
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_Excel2007" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="0.5" Y="3.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Excel2007.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_Excel2007" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="3.5" Y="3.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Writer_Excel2007.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_Serialized" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="0.5" Y="4.25" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_Serialized" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="3.5" Y="4.25" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Writer_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_CSV" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="0.5" Y="5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_CSV" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="3.5" Y="5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Writer_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_Excel5" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="3.5" Y="5.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Writer_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_HTML" Collapsed="true" BaseTypeListCollapsed="true">
|
||||
<Position X="3.5" Y="6.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Writer_Serialized.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_Excel5" Collapsed="true">
|
||||
<Position X="0.5" Y="5.75" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Excel5.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Writer_PDF" Collapsed="true">
|
||||
<Position X="3.5" Y="7.25" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_IOFactory">
|
||||
<Position X="2" Y="0.5" Width="2.25" />
|
||||
<AssociationLine Name="createsReader" Type="ClassDiagrams.PHPExcel_Reader_IReader">
|
||||
<MemberNameLabel ManuallyPlaced="true">
|
||||
<Position X="0.11" Y="0.06" />
|
||||
</MemberNameLabel>
|
||||
</AssociationLine>
|
||||
<AssociationLine Name="createsWriter" Type="ClassDiagrams.PHPExcel_Writer_IWriter">
|
||||
<MemberNameLabel ManuallyPlaced="true">
|
||||
<Position X="-1.088" Y="0.081" />
|
||||
</MemberNameLabel>
|
||||
</AssociationLine>
|
||||
<TypeIdentifier>
|
||||
<HashCode>AIAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_IOFactory.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<ShowAsAssociation>
|
||||
<Property Name="createsReader" />
|
||||
<Property Name="createsWriter" />
|
||||
</ShowAsAssociation>
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_Excel2003XML" Collapsed="true">
|
||||
<Position X="0.5" Y="6.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Excel5.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Class Name="ClassDiagrams.PHPExcel_Reader_SYLK" Collapsed="true">
|
||||
<Position X="0.5" Y="7.25" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\PHPExcel_Reader_Excel5.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
<Lollipop Position="0.2" />
|
||||
</Class>
|
||||
<Interface Name="ClassDiagrams.PHPExcel_Writer_IWriter" Collapsed="true">
|
||||
<Position X="3.5" Y="2.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\IWriter.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
</Interface>
|
||||
<Interface Name="ClassDiagrams.PHPExcel_Reader_IReader" Collapsed="true">
|
||||
<Position X="0.5" Y="2.5" Width="2.25" />
|
||||
<TypeIdentifier>
|
||||
<HashCode>AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
|
||||
<FileName>Classes\IReader.cs</FileName>
|
||||
</TypeIdentifier>
|
||||
</Interface>
|
||||
<Font Name="Tahoma" Size="8.25" />
|
||||
</ClassDiagram>
|
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/assets/ClassDiagrams/ReaderWriter.png
vendored
Normal file
After Width: | Height: | Size: 57 KiB |
947
inc/vendor/phpoffice/phpspreadsheet/docs/assets/logo.svg
vendored
Normal file
@ -0,0 +1,947 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.0"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="593.83423"
|
||||
height="83.444862"
|
||||
viewBox="0 0 593.83424 83.444862"
|
||||
enable-background="new 0 0 281.667 108"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="logo.svg"><metadata
|
||||
id="metadata1423"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs1421" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="851"
|
||||
id="namedview1419"
|
||||
showgrid="false"
|
||||
fit-margin-top="5"
|
||||
fit-margin-left="5"
|
||||
fit-margin-right="5"
|
||||
fit-margin-bottom="5"
|
||||
inkscape:zoom="0.95059059"
|
||||
inkscape:cx="116.66179"
|
||||
inkscape:cy="16.493976"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Layer_1" /><pattern
|
||||
x="-372.333"
|
||||
y="550.667"
|
||||
width="69"
|
||||
height="69"
|
||||
patternUnits="userSpaceOnUse"
|
||||
id="Polka_Dot_Pattern"
|
||||
viewBox="2.125 -70.896 69 69"
|
||||
overflow="visible"><g
|
||||
id="g4"><polygon
|
||||
fill="none"
|
||||
points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
|
||||
id="polygon6" /><polygon
|
||||
fill="#F7BC60"
|
||||
points="71.125,-1.896 2.125,-1.896 2.125,-70.896 71.125,-70.896 "
|
||||
id="polygon8" /><g
|
||||
id="g10"><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path12" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path14" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path16" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path18" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path20" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.439-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path22" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.772-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path24" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.105-71.653c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path26" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19C0.361-71.362,0.3-71.4,0.248-71.335 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path28" /></g><g
|
||||
id="g30"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path32" /></g><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-71.653c0.018,0.072,0.008,0.127-0.026,0.19c-0.052,0.101-0.113,0.063-0.165,0.128 c-0.051,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224C0.5-71.68,0.503-71.744,0.51-71.626 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path34" /><g
|
||||
id="g36"><g
|
||||
id="g38"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path40" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path42" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path44" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path46" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path48" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path50" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path52" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path54" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path56" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-64.001c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143C2-61.45,2.217-61.397,2.391-61.46c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path58" /></g><g
|
||||
id="g60"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path62" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path64" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path66" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path68" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path70" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path72" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path74" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path76" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path78" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-56.348c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-56.374,0.503-56.438,0.51-56.32 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path80" /></g><g
|
||||
id="g82"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path84" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path86" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path88" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path90" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path92" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path94" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path96" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path98" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path100" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-48.695c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path102" /></g><g
|
||||
id="g104"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path106" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path108" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path110" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path112" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path114" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path116" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path118" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path120" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C8.15-41.004,8.149-41.02,8.14-41.04"
|
||||
id="path122" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-41.042c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path124" /></g><g
|
||||
id="g126"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path128" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path130" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path132" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path134" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path136" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path138" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path140" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path142" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path144" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-33.39c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-33.416,0.503-33.48,0.51-33.362 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path146" /></g><g
|
||||
id="g148"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path150" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path152" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path154" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path156" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path158" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path160" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path162" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path164" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path166" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-25.736c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path168" /></g><g
|
||||
id="g170"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path172" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path174" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path176" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path178" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path180" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path182" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path184" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path186" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path188" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-18.084c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224C0.5-18.11,0.503-18.175,0.51-18.057 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path190" /></g><g
|
||||
id="g192"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362C69-9.692,69.159-9.523,69.154-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path194" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path196" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path198" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path200" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path202" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path204" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path206" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.009,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 c0.177,0.042,0.384-0.104,0.543-0.143c0.18-0.043,0.397,0.01,0.571-0.053C17.933-7.969,17.839-8.227,18-8.34 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path208" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C7.915-10.05,7.866-9.836,7.886-9.75C7.717-9.692,7.876-9.523,7.871-9.4C7.868-9.351,7.83-9.295,7.826-9.239 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114-7.652,9.321-7.799,9.48-7.837c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path210" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-10.431c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 C0.254-10.05,0.205-9.836,0.225-9.75C0.056-9.692,0.215-9.523,0.21-9.4c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-8.671,0.501-8.456,0.668-8.325c0.19,0.148,0.365,0.572,0.608,0.631 C1.454-7.652,1.66-7.799,1.819-7.837C2-7.88,2.217-7.827,2.391-7.89c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46C3.477-8.933,3.471-8.995,3.5-9.071 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path212" /></g></g><g
|
||||
id="g214"><path
|
||||
fill="#FFFFFF"
|
||||
d="M69.439-2.778c0.018,0.072,0.008,0.127-0.026,0.19C69.361-2.487,69.3-2.525,69.248-2.46 c-0.051,0.063-0.099,0.276-0.079,0.362C69-2.04,69.159-1.871,69.154-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C70.397,0,70.604-0.146,70.763-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.215,0.124-0.215,0.224c0.002,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path216" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M61.778-2.778c0.018,0.072,0.007,0.127-0.026,0.19C61.7-2.487,61.64-2.525,61.587-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C62.737,0,62.943-0.146,63.103-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C61.915-3.117,61.78-3.02,61.781-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path218" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M54.118-2.778c0.018,0.072,0.007,0.127-0.026,0.19C54.04-2.487,53.98-2.525,53.927-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C55.077,0,55.283-0.146,55.442-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C54.255-3.117,54.12-3.02,54.121-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path220" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M46.458-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C47.416,0,47.623-0.146,47.782-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C46.594-3.117,46.459-3.02,46.46-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path222" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M38.797-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C39.756,0,39.962-0.146,40.122-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C38.934-3.117,38.799-3.02,38.8-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path224" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M31.137-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C32.095,0,32.302-0.146,32.461-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224C31.273-3.117,31.139-3.02,31.14-2.92c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path226" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M23.477-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C24.435,0,24.642-0.146,24.801-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 c-0.021,0.011-0.021-0.005-0.03-0.025"
|
||||
id="path228" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M15.816-2.778c0.018,0.072,0.007,0.127-0.026,0.19c-0.053,0.101-0.112,0.063-0.165,0.128 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C16.774,0,16.981-0.146,17.14-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789c-0.18,0.034-0.287,0.126-0.442,0.207 c-0.17,0.088-0.139,0.166-0.318,0.224c-0.081,0.026-0.216,0.124-0.215,0.224c0.001,0.115,0.005,0.051,0.012,0.169 C15.81-2.74,15.809-2.756,15.8-2.776"
|
||||
id="path230" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M8.156-2.778c0.018,0.072,0.007,0.127-0.026,0.19C8.077-2.487,8.018-2.525,7.965-2.46 c-0.05,0.063-0.099,0.276-0.079,0.362c-0.169,0.058-0.01,0.227-0.015,0.35C7.868-1.698,7.83-1.643,7.826-1.587 c-0.01,0.119,0.017,0.266,0.068,0.37c0.097,0.198,0.268,0.413,0.435,0.544c0.19,0.148,0.365,0.572,0.608,0.631 C9.114,0,9.321-0.146,9.48-0.185c0.18-0.043,0.397,0.01,0.571-0.053c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.069,0.339-0.263,0.376-0.46c0.016-0.082,0.01-0.145,0.039-0.221 c0.039-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.052-0.12-0.064-0.187c-0.022-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C8.954-3.54,8.847-3.448,8.692-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C8.292-3.117,8.158-3.02,8.159-2.92C8.16-2.805,8.164-2.869,8.17-2.751 C8.15-2.74,8.149-2.756,8.14-2.776"
|
||||
id="path232" /><path
|
||||
fill="#FFFFFF"
|
||||
d="M0.495-2.778c0.018,0.072,0.008,0.127-0.026,0.19C0.417-2.487,0.356-2.525,0.304-2.46 C0.253-2.397,0.205-2.184,0.225-2.098C0.056-2.04,0.215-1.871,0.21-1.748c-0.002,0.05-0.041,0.105-0.045,0.161 c-0.01,0.119,0.017,0.266,0.068,0.37C0.33-1.019,0.501-0.804,0.668-0.673c0.19,0.148,0.365,0.572,0.608,0.631 C1.454,0,1.66-0.146,1.819-0.185C2-0.228,2.217-0.175,2.391-0.237c0.222-0.079,0.127-0.337,0.288-0.45 c0.104-0.074,0.287-0.01,0.406-0.051c0.2-0.07,0.339-0.263,0.376-0.46C3.477-1.28,3.471-1.343,3.5-1.419 c0.038-0.103,0.111-0.16,0.09-0.293c-0.01-0.062-0.051-0.12-0.064-0.187c-0.021-0.114,0.002-0.224,0-0.337 c-0.003-0.2,0.017-0.379-0.078-0.55c-0.38-0.688-1.236-0.929-1.975-0.789C1.293-3.54,1.187-3.448,1.031-3.367 c-0.17,0.088-0.139,0.166-0.318,0.224C0.632-3.117,0.498-3.02,0.498-2.92C0.5-2.805,0.503-2.869,0.51-2.751 C0.489-2.74,0.488-2.756,0.479-2.776"
|
||||
id="path234" /></g></g></pattern><g
|
||||
id="g4799"
|
||||
transform="matrix(1.7899847,0,0,1.7899847,414.16933,-99.13773)"><path
|
||||
sodipodi:nodetypes="csssssssccsssscsssscsssssssscc"
|
||||
style="fill:#d1d3d4"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path270"
|
||||
d="m 62.312,71.939 6.483,0 c 1.159,0 2.111,-0.97 2.111,-2.129 l 0,-6.465 c 0,-1.168 -0.952,-2.11 -2.111,-2.11 l -6.483,0 c -1.159,0 -2.111,0.942 -2.111,2.11 l 0,6.465 c 0,1.159 0.951,2.129 2.111,2.129 m 29.422,-10.764 -13.303,0 c -1.167,0 -2.119,0.961 -2.119,2.128 l 0,6.698 c 0,0.861 0.554,1.771 2.119,1.771 l 8.246,0 c 0.737,0.017 1.374,0.671 1.374,1.44 l 0,14.993 c 0,0.811 -0.654,1.465 -1.457,1.465 l -14.115,0 c -0.779,0 -1.441,-0.645 -1.449,-1.439 l 0,-8.577 c 0,-1.159 -0.96,-2.104 -2.128,-2.104 l -6.442,0 c -1.175,0 -2.119,0.944 -2.119,2.104 l 0,13.718 c 0,3.212 2.616,5.837 5.845,5.837 l 25.548,0 c 3.213,0 5.845,-2.625 5.845,-5.837 l 0,-26.334 c 0.001,-3.23 -2.631,-5.863 -5.845,-5.863" /><g
|
||||
id="g350"><defs
|
||||
id="defs352"><path
|
||||
d="m 59.314,68.933 6.466,0 c 1.159,0 2.12,-0.96 2.12,-2.128 l 0,-6.466 c 0,-1.167 -0.961,-2.119 -2.12,-2.119 l -6.466,0 c -1.175,0 -2.127,0.952 -2.127,2.119 l 0,6.466 c 0.001,1.168 0.953,2.128 2.127,2.128 m -1.25,-8.594 c 0,-0.687 0.563,-1.25 1.25,-1.25 l 6.466,0 c 0.679,0 1.234,0.563 1.234,1.25 l 0,6.466 c 0,0.68 -0.555,1.25 -1.234,1.25 l -6.466,0 c -0.687,0 -1.25,-0.57 -1.25,-1.25 l 0,-6.466 z"
|
||||
id="SVGID_7_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_8_"><use
|
||||
id="use356"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_7_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(-8.2078,6.7422,6.7422,8.2078,-4712.8232,-1057.6393)"
|
||||
y2="366.9321"
|
||||
x2="-279.9787"
|
||||
y1="366.9321"
|
||||
x1="-280.979"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_9_"><stop
|
||||
id="stop359"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop361"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop363"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop365"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop367"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop369"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop371"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop373"
|
||||
style="stop-color:#76A93C"
|
||||
offset="0.7284" /><stop
|
||||
id="stop375"
|
||||
style="stop-color:#6BA03F"
|
||||
offset="0.818" /><stop
|
||||
id="stop377"
|
||||
style="stop-color:#599344"
|
||||
offset="0.9123" /><stop
|
||||
id="stop379"
|
||||
style="stop-color:#3F8348"
|
||||
offset="1" /></linearGradient><polygon
|
||||
id="polygon381"
|
||||
points="61.504,74.188 51.933,62.537 63.584,52.966 73.155,64.618 "
|
||||
clip-path="url(#SVGID_8_)"
|
||||
style="fill:url(#SVGID_9_)" /></g><g
|
||||
id="g383"><defs
|
||||
id="defs385"><path
|
||||
d="m 88.729,58.178 -13.304,0 c -1.167,0 -2.119,0.945 -2.119,2.12 l 0,6.689 c 0,0.87 0.554,1.764 2.119,1.764 l 8.246,0 c 0.737,0.033 1.374,0.679 1.374,1.465 l 0,14.977 c 0,0.819 -0.662,1.466 -1.465,1.466 l -14.106,0 c -0.804,0 -1.449,-0.639 -1.466,-1.434 l 0,-8.575 c 0,-1.159 -0.944,-2.111 -2.111,-2.111 l -6.449,0 c -1.167,0 -2.119,0.952 -2.119,2.111 l 0,13.71 c 0,3.22 2.624,5.836 5.844,5.836 l 25.557,0 c 3.221,0 5.828,-2.616 5.828,-5.836 l 0,-26.335 c 0,-3.222 -2.607,-5.847 -5.829,-5.847 m 4.959,32.182 c 0,2.723 -2.235,4.959 -4.959,4.959 l -25.557,0 c -2.723,0 -4.959,-2.236 -4.959,-4.959 l 0,-13.71 c 0,-0.663 0.547,-1.242 1.234,-1.242 l 6.449,0 c 0.679,0 1.242,0.579 1.242,1.242 l 0,8.593 c 0.016,1.267 1.059,2.293 2.335,2.293 l 14.107,0 c 1.283,0 2.334,-1.043 2.334,-2.343 l 0,-14.977 c 0,-1.258 -1.01,-2.302 -2.243,-2.335 l -8.246,0 c -0.679,0 -1.242,-0.198 -1.242,-0.894 l 0,-6.689 c 0,-0.687 0.563,-1.233 1.242,-1.233 l 13.304,0 c 2.724,0 4.959,2.219 4.959,4.96 l 0,26.335 z"
|
||||
id="SVGID_10_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_11_"><use
|
||||
id="use389"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_10_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(25.2043,-29.1608,-29.1608,-25.2043,17056.752,1261.5281)"
|
||||
y2="353.40671"
|
||||
x2="-264.37891"
|
||||
y1="353.40671"
|
||||
x1="-265.37891"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_12_"><stop
|
||||
id="stop392"
|
||||
style="stop-color:#63923F"
|
||||
offset="0" /><stop
|
||||
id="stop394"
|
||||
style="stop-color:#89B33C"
|
||||
offset="0.1634" /><stop
|
||||
id="stop396"
|
||||
style="stop-color:#3A8040"
|
||||
offset="0.3416" /><stop
|
||||
id="stop398"
|
||||
style="stop-color:#D3DF9E"
|
||||
offset="0.5545" /><stop
|
||||
id="stop400"
|
||||
style="stop-color:#CDDA97"
|
||||
offset="0.5742" /><stop
|
||||
id="stop402"
|
||||
style="stop-color:#BBCC82"
|
||||
offset="0.6083" /><stop
|
||||
id="stop404"
|
||||
style="stop-color:#9EB861"
|
||||
offset="0.6527" /><stop
|
||||
id="stop406"
|
||||
style="stop-color:#7EA441"
|
||||
offset="0.698" /><stop
|
||||
id="stop408"
|
||||
style="stop-color:#417F43"
|
||||
offset="1" /></linearGradient><polygon
|
||||
id="polygon410"
|
||||
points="73.248,39.76 113.366,74.435 78.638,114.614 38.521,79.939 "
|
||||
clip-path="url(#SVGID_11_)"
|
||||
style="fill:url(#SVGID_12_)" /></g><g
|
||||
id="g659"><defs
|
||||
id="defs661"><path
|
||||
d="m 59.314,68.055 6.466,0 c 0.679,0 1.234,-0.57 1.234,-1.25 l 0,-6.466 c 0,-0.687 -0.555,-1.25 -1.234,-1.25 l -6.466,0 c -0.687,0 -1.25,0.563 -1.25,1.25 l 0,6.466 c 0,0.68 0.563,1.25 1.25,1.25 m -0.372,-7.716 c 0,-0.198 0.174,-0.372 0.372,-0.372 l 6.466,0 c 0.199,0 0.365,0.174 0.365,0.372 l 0,6.466 c 0,0.199 -0.166,0.381 -0.365,0.381 l -6.466,0 c -0.198,0 -0.372,-0.182 -0.372,-0.381 l 0,-6.466 z"
|
||||
id="SVGID_34_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_35_"><use
|
||||
id="use665"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_34_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(37.3745,0,0,-37.3743,9913.0078,13394.728)"
|
||||
y2="356.6929"
|
||||
x2="-262.7066"
|
||||
y1="356.6929"
|
||||
x1="-263.70459"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_36_"><stop
|
||||
id="stop668"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop670"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop672"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop674"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop676"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop678"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop680"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop682"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop684"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop686"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop688"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop690"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><rect
|
||||
id="rect692"
|
||||
height="8.9639997"
|
||||
width="8.9300003"
|
||||
clip-path="url(#SVGID_35_)"
|
||||
y="59.089001"
|
||||
x="58.084"
|
||||
style="fill:url(#SVGID_36_)" /><linearGradient
|
||||
gradientTransform="matrix(38.531,32.4011,32.4011,-38.531,-1333.1589,22496.984)"
|
||||
y2="358.89499"
|
||||
x2="-264.7178"
|
||||
y1="358.89499"
|
||||
x1="-265.71579"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_37_"><stop
|
||||
id="stop695"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop697"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop699"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop701"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop703"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop705"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop707"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop709"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop711"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop713"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop715"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop717"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><polygon
|
||||
id="polygon719"
|
||||
points="71.431,62.803 63.307,72.464 53.648,64.341 61.772,54.681 "
|
||||
clip-path="url(#SVGID_35_)"
|
||||
style="fill:url(#SVGID_37_)" /></g><g
|
||||
id="g721"><defs
|
||||
id="defs723"><path
|
||||
d="m 88.729,59.065 -13.304,0 c -0.679,0 -1.242,0.547 -1.242,1.233 l 0,6.689 c 0,0.695 0.563,0.894 1.242,0.894 l 8.246,0 c 1.233,0.033 2.243,1.077 2.243,2.335 l 0,14.977 c 0,1.3 -1.051,2.343 -2.334,2.343 l -14.106,0 c -1.276,0 -2.319,-1.026 -2.335,-2.293 l 0,-8.593 c 0,-0.663 -0.563,-1.242 -1.242,-1.242 l -6.449,0 c -0.688,0 -1.234,0.579 -1.234,1.242 l 0,13.71 c 0,2.723 2.236,4.959 4.959,4.959 l 25.557,0 c 2.724,0 4.959,-2.236 4.959,-4.959 l 0,-26.335 c -10e-4,-2.741 -2.235,-4.96 -4.96,-4.96 m 4.083,31.295 c 0,2.268 -1.83,4.089 -4.082,4.089 l -25.558,0 c -2.251,0 -4.089,-1.821 -4.089,-4.089 l 0,-13.71 c 0,-0.191 0.165,-0.356 0.364,-0.356 l 6.449,0 c 0.19,0 0.365,0.165 0.365,0.356 l 0,8.593 c 0.033,1.755 1.473,3.171 3.212,3.171 l 14.107,0 c 1.78,0 3.212,-1.441 3.212,-3.221 l 0,-14.977 c 0,-1.747 -1.358,-3.153 -3.097,-3.212 l -8.27,0 -0.43,-0.058 0.057,-6.648 c 0,-0.207 0.166,-0.364 0.373,-0.364 l 13.304,0 c 2.252,0 4.082,1.821 4.082,4.091 l 0,26.335 z"
|
||||
id="SVGID_38_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_39_"><use
|
||||
id="use727"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_38_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(37.3733,0,0,-37.3733,9912.6934,13407.99)"
|
||||
y2="356.69379"
|
||||
x2="-262.7041"
|
||||
y1="356.69379"
|
||||
x1="-263.70459"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_40_"><stop
|
||||
id="stop730"
|
||||
style="stop-color:#84B93A"
|
||||
offset="0" /><stop
|
||||
id="stop732"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop734"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop736"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop738"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop740"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop742"
|
||||
style="stop-color:#76A93C"
|
||||
offset="0.7301" /><stop
|
||||
id="stop744"
|
||||
style="stop-color:#6BA140"
|
||||
offset="0.8215" /><stop
|
||||
id="stop746"
|
||||
style="stop-color:#579445"
|
||||
offset="0.9178" /><stop
|
||||
id="stop748"
|
||||
style="stop-color:#3E8749"
|
||||
offset="1" /></linearGradient><rect
|
||||
id="rect750"
|
||||
height="36.248001"
|
||||
width="35.458"
|
||||
clip-path="url(#SVGID_39_)"
|
||||
y="59.064999"
|
||||
x="58.213001"
|
||||
style="fill:url(#SVGID_40_)" /></g><g
|
||||
id="g1295"><defs
|
||||
id="defs1297"><path
|
||||
d="m 88.729,59.934 -13.304,0 c -0.207,0 -0.373,0.157 -0.373,0.364 l -0.057,6.648 0.43,0.058 8.27,0 c 1.739,0.059 3.097,1.465 3.097,3.212 l 0,14.977 c 0,1.779 -1.432,3.221 -3.212,3.221 l -14.106,0 c -1.739,0 -3.179,-1.416 -3.212,-3.171 l 0,-8.593 c 0,-0.191 -0.175,-0.356 -0.365,-0.356 l -6.449,0 c -0.199,0 -0.364,0.165 -0.364,0.356 l 0,13.71 c 0,2.268 1.838,4.089 4.089,4.089 l 25.557,0 c 2.252,0 4.082,-1.821 4.082,-4.089 l 0,-26.335 c 0,-2.27 -1.831,-4.091 -4.083,-4.091"
|
||||
id="SVGID_80_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_81_"><use
|
||||
id="use1301"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_80_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(37.3771,0,0,-37.3771,9913.7051,13409.342)"
|
||||
y2="356.69379"
|
||||
x2="-262.70511"
|
||||
y1="356.69379"
|
||||
x1="-263.70511"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_82_"><stop
|
||||
id="stop1304"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop1306"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop1308"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop1310"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop1312"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop1314"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop1316"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop1318"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop1320"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop1322"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop1324"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop1326"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><rect
|
||||
id="rect1328"
|
||||
height="34.514999"
|
||||
width="33.714001"
|
||||
clip-path="url(#SVGID_81_)"
|
||||
y="59.933998"
|
||||
x="59.094002"
|
||||
style="fill:url(#SVGID_82_)" /><linearGradient
|
||||
gradientTransform="matrix(38.531,32.4011,32.4011,-38.531,-1334.2839,22498.367)"
|
||||
y2="358.8931"
|
||||
x2="-264.71631"
|
||||
y1="358.8931"
|
||||
x1="-265.71631"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_83_"><stop
|
||||
id="stop1331"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop1333"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop1335"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop1337"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop1339"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop1341"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop1343"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop1345"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop1347"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop1349"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop1351"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop1353"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><polygon
|
||||
id="polygon1355"
|
||||
points="109.813,74.231 78.841,111.063 42.083,80.152 73.054,43.32 "
|
||||
clip-path="url(#SVGID_81_)"
|
||||
style="fill:url(#SVGID_83_)" /></g><g
|
||||
id="g1357"><defs
|
||||
id="defs1359"><path
|
||||
d="m 59.314,67.186 6.466,0 c 0.199,0 0.365,-0.182 0.365,-0.381 l 0,-6.466 c 0,-0.198 -0.166,-0.372 -0.365,-0.372 l -6.466,0 c -0.198,0 -0.372,0.174 -0.372,0.372 l 0,6.466 c 0,0.199 0.175,0.381 0.372,0.381"
|
||||
id="SVGID_84_"
|
||||
inkscape:connector-curvature="0" /></defs><clipPath
|
||||
id="SVGID_85_"><use
|
||||
id="use1363"
|
||||
overflow="visible"
|
||||
xlink:href="#SVGID_84_"
|
||||
style="overflow:visible"
|
||||
x="0"
|
||||
y="0"
|
||||
width="100%"
|
||||
height="100%" /></clipPath><linearGradient
|
||||
gradientTransform="matrix(37.366,0,0,-37.366,9910.7266,13391.768)"
|
||||
y2="356.6929"
|
||||
x2="-262.70361"
|
||||
y1="356.6929"
|
||||
x1="-263.70361"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_86_"><stop
|
||||
id="stop1366"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop1368"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop1370"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop1372"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop1374"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop1376"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop1378"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop1380"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop1382"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop1384"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop1386"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop1388"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><rect
|
||||
id="rect1390"
|
||||
height="7.2189999"
|
||||
width="7.1739998"
|
||||
clip-path="url(#SVGID_85_)"
|
||||
y="59.966999"
|
||||
x="58.943001"
|
||||
style="fill:url(#SVGID_86_)" /><linearGradient
|
||||
gradientTransform="matrix(38.5116,32.3848,32.3848,-38.5116,-1332.5708,22485.697)"
|
||||
y2="358.89499"
|
||||
x2="-264.71481"
|
||||
y1="358.89499"
|
||||
x1="-265.71481"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="SVGID_87_"><stop
|
||||
id="stop1393"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0" /><stop
|
||||
id="stop1395"
|
||||
style="stop-color:#0DB14B"
|
||||
offset="0.0052" /><stop
|
||||
id="stop1397"
|
||||
style="stop-color:#B4D670"
|
||||
offset="0.3784" /><stop
|
||||
id="stop1399"
|
||||
style="stop-color:#AED16B"
|
||||
offset="0.4463" /><stop
|
||||
id="stop1401"
|
||||
style="stop-color:#A1C85E"
|
||||
offset="0.5181" /><stop
|
||||
id="stop1403"
|
||||
style="stop-color:#8DBA4B"
|
||||
offset="0.5915" /><stop
|
||||
id="stop1405"
|
||||
style="stop-color:#79AD3B"
|
||||
offset="0.6495" /><stop
|
||||
id="stop1407"
|
||||
style="stop-color:#75A93B"
|
||||
offset="0.713" /><stop
|
||||
id="stop1409"
|
||||
style="stop-color:#699F3E"
|
||||
offset="0.785" /><stop
|
||||
id="stop1411"
|
||||
style="stop-color:#559241"
|
||||
offset="0.8612" /><stop
|
||||
id="stop1413"
|
||||
style="stop-color:#348144"
|
||||
offset="0.9398" /><stop
|
||||
id="stop1415"
|
||||
style="stop-color:#007345"
|
||||
offset="1" /></linearGradient><polygon
|
||||
id="polygon1417"
|
||||
points="69.702,62.958 63.162,70.735 55.387,64.196 61.926,56.419 "
|
||||
clip-path="url(#SVGID_85_)"
|
||||
style="fill:url(#SVGID_87_)" /></g></g><g
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text4795"
|
||||
transform="matrix(1.3875123,0,0,1.3875123,-1.9375615,-1.9375579)"><path
|
||||
d="m 8.9453125,19.702984 0,10.957031 4.9609375,0 q 2.753906,0 4.257812,-1.425781 1.503907,-1.425781 1.503907,-4.0625 0,-2.617188 -1.503907,-4.042969 -1.503906,-1.425781 -4.257812,-1.425781 l -4.9609375,0 z M 5,16.460796 l 8.90625,0 q 4.902344,0 7.402344,2.226563 2.519531,2.207031 2.519531,6.484375 0,4.316406 -2.519531,6.523437 -2.5,2.207032 -7.402344,2.207032 l -4.9609375,0 0,11.71875 -3.9453125,0 0,-29.160157 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif"
|
||||
id="path3621"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 47.167969,32.417828 0,13.203125 -3.59375,0 0,-13.085938 q 0,-3.105469 -1.210938,-4.648437 -1.210937,-1.542969 -3.632812,-1.542969 -2.910157,0 -4.589844,1.855469 -1.679688,1.855468 -1.679688,5.058593 l 0,12.363282 -3.613281,0 0,-30.390625 3.613281,0 0,11.914062 q 1.289063,-1.972656 3.027344,-2.949219 1.757813,-0.976562 4.042969,-0.976562 3.769531,0 5.703125,2.34375 1.933594,2.324219 1.933594,6.855469 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif"
|
||||
id="path3623"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 57.851562,42.339703 0,11.601562 -3.613281,0 0,-30.195312 3.613281,0 0,3.320312 q 1.132813,-1.953125 2.851563,-2.890625 1.738281,-0.957031 4.140625,-0.957031 3.984375,0 6.464844,3.164062 2.5,3.164063 2.5,8.320313 0,5.15625 -2.5,8.320312 -2.480469,3.164063 -6.464844,3.164063 -2.402344,0 -4.140625,-0.9375 -1.71875,-0.957031 -2.851563,-2.910156 z m 12.226563,-7.636719 q 0,-3.964844 -1.640625,-6.210938 -1.621094,-2.265625 -4.472656,-2.265625 -2.851563,0 -4.492188,2.265625 -1.621094,2.246094 -1.621094,6.210938 0,3.964844 1.621094,6.230469 1.640625,2.246093 4.492188,2.246093 2.851562,0 4.472656,-2.246093 1.640625,-2.265625 1.640625,-6.230469 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif"
|
||||
id="path3625"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 99.960937,17.378765 0,6.171875 q -2.402343,-1.074219 -4.6875,-1.621094 -2.285156,-0.546875 -4.316406,-0.546875 -2.695312,0 -3.984375,0.742188 -1.289062,0.742187 -1.289062,2.304687 0,1.171875 0.859375,1.835938 0.878906,0.644531 3.164062,1.113281 l 3.203125,0.644531 q 4.863281,0.976563 6.914063,2.96875 2.050781,1.992188 2.050781,5.664063 0,4.824219 -2.871094,7.1875 -2.851562,2.34375 -8.730469,2.34375 -2.773437,0 -5.566406,-0.527344 -2.792969,-0.527344 -5.585937,-1.5625 l 0,-6.347656 q 2.792968,1.484375 5.390625,2.246094 2.617187,0.742187 5.039062,0.742187 2.460938,0 3.769531,-0.820312 1.308594,-0.820313 1.308594,-2.34375 0,-1.367188 -0.898437,-2.109375 -0.878907,-0.742188 -3.535157,-1.328125 l -2.910156,-0.644532 q -4.375,-0.9375 -6.40625,-2.988281 -2.011719,-2.050781 -2.011719,-5.527344 0,-4.355468 2.8125,-6.699218 2.8125,-2.34375 8.085938,-2.34375 2.402344,0 4.941406,0.371093 2.539063,0.351563 5.253906,1.074219 z"
|
||||
style="font-weight:bold"
|
||||
id="path3627"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 115.17578,42.45689 0,11.484375 -6.99219,0 0,-30.195312 6.99219,0 0,3.203125 q 1.44531,-1.914063 3.20313,-2.8125 1.75781,-0.917969 4.04297,-0.917969 4.04296,0 6.64062,3.222656 2.59766,3.203125 2.59766,8.261719 0,5.058594 -2.59766,8.28125 -2.59766,3.203125 -6.64062,3.203125 -2.28516,0 -4.04297,-0.898438 -1.75782,-0.917968 -3.20313,-2.832031 z m 4.64844,-14.160156 q -2.24609,0 -3.45703,1.660156 -1.19141,1.640625 -1.19141,4.746094 0,3.105469 1.19141,4.765625 1.21094,1.640625 3.45703,1.640625 2.24609,0 3.41797,-1.640625 1.1914,-1.640625 1.1914,-4.765625 0,-3.125 -1.1914,-4.765625 -1.17188,-1.640625 -3.41797,-1.640625 z"
|
||||
style="font-weight:bold"
|
||||
id="path3629"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 153.10547,29.702984 q -0.91797,-0.429688 -1.83594,-0.625 -0.89844,-0.214844 -1.81641,-0.214844 -2.69531,0 -4.16015,1.738281 -1.44531,1.71875 -1.44531,4.941407 l 0,10.078125 -6.99219,0 0,-21.875 6.99219,0 0,3.59375 q 1.34765,-2.148438 3.08593,-3.125 1.75782,-0.996094 4.19922,-0.996094 0.35156,0 0.76172,0.03906 0.41016,0.01953 1.19141,0.117188 l 0.0195,6.328125 z"
|
||||
style="font-weight:bold"
|
||||
id="path3631"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 178.45703,34.624859 0,1.992187 -16.34766,0 q 0.25391,2.460938 1.77735,3.691407 1.52344,1.230468 4.25781,1.230468 2.20703,0 4.51172,-0.644531 2.32422,-0.664062 4.76562,-1.992187 l 0,5.390625 q -2.48046,0.9375 -4.96093,1.40625 -2.48047,0.488281 -4.96094,0.488281 -5.9375,0 -9.23828,-3.007813 -3.28125,-3.027343 -3.28125,-8.476562 0,-5.351563 3.22265,-8.417969 3.24219,-3.066406 8.90625,-3.066406 5.15625,0 8.24219,3.105469 3.10547,3.105468 3.10547,8.300781 z m -7.1875,-2.324219 q 0,-1.992187 -1.17187,-3.203125 -1.15235,-1.230469 -3.02735,-1.230469 -2.03125,0 -3.30078,1.152344 -1.26953,1.132813 -1.58203,3.28125 l 9.08203,0 z"
|
||||
style="font-weight:bold"
|
||||
id="path3633"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 193.53516,35.777203 q -2.1875,0 -3.30079,0.742187 -1.09375,0.742188 -1.09375,2.1875 0,1.328125 0.87891,2.089844 0.89844,0.742187 2.48047,0.742187 1.97266,0 3.32031,-1.40625 1.34766,-1.425781 1.34766,-3.554687 l 0,-0.800781 -3.63281,0 z m 10.68359,-2.636719 0,12.480469 -7.05078,0 0,-3.242188 q -1.40625,1.992188 -3.16406,2.910156 -1.75782,0.898438 -4.27735,0.898438 -3.39844,0 -5.52734,-1.972656 -2.10938,-1.992188 -2.10938,-5.15625 0,-3.847657 2.63672,-5.644532 2.65625,-1.796875 8.32031,-1.796875 l 4.1211,0 0,-0.546875 q 0,-1.660156 -1.3086,-2.421875 -1.30859,-0.78125 -4.08203,-0.78125 -2.24609,0 -4.17968,0.449219 -1.9336,0.449219 -3.59375,1.347656 l 0,-5.332031 q 2.24609,-0.546875 4.51171,-0.820312 2.26563,-0.292969 4.53125,-0.292969 5.91797,0 8.53516,2.34375 2.63672,2.324219 2.63672,7.578125 z"
|
||||
style="font-weight:bold"
|
||||
id="path3635"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 225.64453,26.949078 0,-11.71875 7.03125,0 0,30.390625 -7.03125,0 0,-3.164063 q -1.44531,1.933594 -3.18359,2.832031 -1.73828,0.898438 -4.02344,0.898438 -4.04297,0 -6.64063,-3.203125 -2.59765,-3.222656 -2.59765,-8.28125 0,-5.058594 2.59765,-8.261719 2.59766,-3.222656 6.64063,-3.222656 2.26562,0 4.00391,0.917969 1.75781,0.898437 3.20312,2.8125 z m -4.60937,14.160156 q 2.24609,0 3.41796,-1.640625 1.19141,-1.640625 1.19141,-4.765625 0,-3.125 -1.19141,-4.765625 -1.17187,-1.640625 -3.41796,-1.640625 -2.22657,0 -3.41797,1.640625 -1.17188,1.640625 -1.17188,4.765625 0,3.125 1.17188,4.765625 1.1914,1.640625 3.41797,1.640625 z"
|
||||
style="font-weight:bold"
|
||||
id="path3637"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 256.52344,24.429546 0,5.3125 q -2.2461,-0.9375 -4.33594,-1.40625 -2.08984,-0.46875 -3.94531,-0.46875 -1.99219,0 -2.96875,0.507813 -0.95703,0.488281 -0.95703,1.523437 0,0.839844 0.72265,1.289063 0.74219,0.449219 2.63672,0.664062 l 1.23047,0.175782 q 5.37109,0.683593 7.22656,2.246093 1.85547,1.5625 1.85547,4.902344 0,3.496094 -2.57812,5.253906 -2.57813,1.757813 -7.69532,1.757813 -2.16797,0 -4.49218,-0.351563 -2.30469,-0.332031 -4.7461,-1.015625 l 0,-5.3125 q 2.08985,1.015625 4.27735,1.523438 2.20703,0.507812 4.47265,0.507812 2.05078,0 3.08594,-0.566406 1.03516,-0.566406 1.03516,-1.679687 0,-0.9375 -0.72266,-1.386719 -0.70313,-0.46875 -2.83203,-0.722656 l -1.23047,-0.15625 q -4.66797,-0.585938 -6.54297,-2.167969 -1.875,-1.582031 -1.875,-4.804688 0,-3.476562 2.38281,-5.15625 2.38282,-1.679687 7.30469,-1.679687 1.93359,0 4.0625,0.292969 2.12891,0.292968 4.62891,0.917968 z"
|
||||
style="font-weight:bold"
|
||||
id="path3639"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 285.25391,32.30064 0,13.320313 -7.03125,0 0,-2.167969 0,-7.988281 q 0,-2.871094 -0.13672,-3.945313 -0.11719,-1.074219 -0.42969,-1.582031 -0.41016,-0.683594 -1.11328,-1.054688 -0.70313,-0.390625 -1.60156,-0.390625 -2.1875,0 -3.4375,1.699219 -1.25,1.679688 -1.25,4.667969 l 0,10.761719 -6.99219,0 0,-30.390625 6.99219,0 0,11.71875 q 1.58203,-1.914063 3.35937,-2.8125 1.77734,-0.917969 3.92578,-0.917969 3.78906,0 5.74219,2.324219 1.97266,2.324218 1.97266,6.757812 z"
|
||||
style="font-weight:bold"
|
||||
id="path3641"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 313.61328,34.624859 0,1.992187 -16.34766,0 q 0.25391,2.460938 1.77735,3.691407 1.52344,1.230468 4.25781,1.230468 2.20703,0 4.51172,-0.644531 2.32422,-0.664062 4.76562,-1.992187 l 0,5.390625 q -2.48046,0.9375 -4.96093,1.40625 -2.48047,0.488281 -4.96094,0.488281 -5.9375,0 -9.23828,-3.007813 -3.28125,-3.027343 -3.28125,-8.476562 0,-5.351563 3.22265,-8.417969 3.24219,-3.066406 8.90625,-3.066406 5.15625,0 8.24219,3.105469 3.10547,3.105468 3.10547,8.300781 z m -7.1875,-2.324219 q 0,-1.992187 -1.17187,-3.203125 -1.15235,-1.230469 -3.02735,-1.230469 -2.03125,0 -3.30078,1.152344 -1.26953,1.132813 -1.58203,3.28125 l 9.08203,0 z"
|
||||
style="font-weight:bold"
|
||||
id="path3643"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 340.72266,34.624859 0,1.992187 -16.34766,0 q 0.25391,2.460938 1.77734,3.691407 1.52344,1.230468 4.25782,1.230468 2.20703,0 4.51171,-0.644531 2.32422,-0.664062 4.76563,-1.992187 l 0,5.390625 q -2.48047,0.9375 -4.96094,1.40625 -2.48047,0.488281 -4.96094,0.488281 -5.9375,0 -9.23828,-3.007813 -3.28125,-3.027343 -3.28125,-8.476562 0,-5.351563 3.22266,-8.417969 3.24219,-3.066406 8.90625,-3.066406 5.15625,0 8.24219,3.105469 3.10547,3.105468 3.10547,8.300781 z m -7.1875,-2.324219 q 0,-1.992187 -1.17188,-3.203125 -1.15234,-1.230469 -3.02734,-1.230469 -2.03125,0 -3.30078,1.152344 -1.26954,1.132813 -1.58204,3.28125 l 9.08204,0 z"
|
||||
style="font-weight:bold"
|
||||
id="path3645"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 353.63281,17.535015 0,6.210938 7.20703,0 0,5 -7.20703,0 0,9.277343 q 0,1.523438 0.60547,2.070313 0.60547,0.527344 2.40234,0.527344 l 3.59375,0 0,5 -5.99609,0 q -4.14062,0 -5.87891,-1.71875 -1.71875,-1.738282 -1.71875,-5.878907 l 0,-9.277343 -3.47656,0 0,-5 3.47656,0 0,-6.210938 6.99219,0 z"
|
||||
style="font-weight:bold"
|
||||
id="path3647"
|
||||
inkscape:connector-curvature="0" /></g></svg>
|
After Width: | Height: | Size: 130 KiB |
8
inc/vendor/phpoffice/phpspreadsheet/docs/extra/extra.css
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/* Make the huge table always visible */
|
||||
table.features-cross-reference {
|
||||
overflow: visible !important;
|
||||
}
|
||||
.rst-content table.features-cross-reference.docutils th,
|
||||
.rst-content table.features-cross-reference.docutils td {
|
||||
background-color: white;
|
||||
}
|
57
inc/vendor/phpoffice/phpspreadsheet/docs/extra/extra.js
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
var nodemcu = nodemcu || {};
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
$(document).ready(function () {
|
||||
fixSearch();
|
||||
});
|
||||
|
||||
/*
|
||||
* RTD messes up MkDocs' search feature by tinkering with the search box defined in the theme, see
|
||||
* https://github.com/rtfd/readthedocs.org/issues/1088. This function sets up a DOM4 MutationObserver
|
||||
* to react to changes to the search form (triggered by RTD on doc ready). It then reverts everything
|
||||
* the RTD JS code modified.
|
||||
*/
|
||||
function fixSearch() {
|
||||
var target = document.getElementById('rtd-search-form');
|
||||
var config = {attributes: true, childList: true};
|
||||
|
||||
var observer = new MutationObserver(function (mutations) {
|
||||
// if it isn't disconnected it'll loop infinitely because the observed element is modified
|
||||
observer.disconnect();
|
||||
var form = $('#rtd-search-form');
|
||||
form.empty();
|
||||
form.attr('action', 'https://' + window.location.hostname + '/en/' + determineSelectedBranch() + '/search.html');
|
||||
$('<input>').attr({
|
||||
type: "text",
|
||||
name: "q",
|
||||
placeholder: "Search docs"
|
||||
}).appendTo(form);
|
||||
});
|
||||
|
||||
if (window.location.origin.indexOf('readthedocs') > -1) {
|
||||
observer.observe(target, config);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Analyzes the URL of the current page to find out what the selected GitHub branch is. It's usually
|
||||
* part of the location path. The code needs to distinguish between running MkDocs standalone
|
||||
* and docs served from RTD. If no valid branch could be determined 'dev' returned.
|
||||
*
|
||||
* @returns GitHub branch name
|
||||
*/
|
||||
function determineSelectedBranch() {
|
||||
var branch = 'dev', path = window.location.pathname;
|
||||
if (window.location.origin.indexOf('readthedocs') > -1) {
|
||||
// path is like /en/<branch>/<lang>/build/ -> extract 'lang'
|
||||
// split[0] is an '' because the path starts with the separator
|
||||
var thirdPathSegment = path.split('/')[2];
|
||||
// 'latest' is an alias on RTD for the 'dev' branch - which is the default for 'branch' here
|
||||
if (thirdPathSegment !== 'latest') {
|
||||
branch = thirdPathSegment;
|
||||
}
|
||||
}
|
||||
return branch;
|
||||
}
|
||||
}());
|
57
inc/vendor/phpoffice/phpspreadsheet/docs/faq.md
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
# Frequently asked questions
|
||||
|
||||
## There seems to be a problem with character encoding...
|
||||
|
||||
It is necessary to use UTF-8 encoding for all texts in PhpSpreadsheet.
|
||||
If the script uses different encoding then you can convert those texts
|
||||
with PHP's `iconv()` or `mb_convert_encoding()` functions.
|
||||
|
||||
## Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in zzz on line aaa
|
||||
|
||||
PhpSpreadsheet holds an "in memory" representation of a spreadsheet, so
|
||||
it is susceptible to PHP's memory limitations. The memory made available
|
||||
to PHP can be increased by editing the value of the `memory_limit`
|
||||
directive in your `php.ini` file, or by using
|
||||
`ini_set('memory_limit', '128M')` within your code.
|
||||
|
||||
Some Readers and Writers are faster than others, and they also use
|
||||
differing amounts of memory.
|
||||
|
||||
## Protection on my worksheet is not working?
|
||||
|
||||
When you make use of any of the worksheet protection features (e.g. cell
|
||||
range protection, prohibiting deleting rows, ...), make sure you enable
|
||||
worksheet security. This can for example be done like this:
|
||||
|
||||
``` php
|
||||
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
|
||||
```
|
||||
|
||||
## Feature X is not working with Reader\_Y / Writer\_Z
|
||||
|
||||
Not all features of PhpSpreadsheet are implemented in all of the Reader
|
||||
/ Writer classes. This is mostly due to underlying libraries not
|
||||
supporting a specific feature or not having implemented a specific
|
||||
feature.
|
||||
|
||||
For example autofilter is not implemented in PEAR
|
||||
Spreadsheet\_Excel\_writer, which is the base of our Xls writer.
|
||||
|
||||
We are slowly building up a list of features, together with the
|
||||
different readers and writers that support them, in the [features cross
|
||||
reference](./references/features-cross-reference.md).
|
||||
|
||||
## Formulas don't seem to be calculated in Excel2003 using compatibility pack?
|
||||
|
||||
This is normal behaviour of the compatibility pack, `Xlsx` displays this
|
||||
correctly. Use `\PhpOffice\PhpSpreadsheet\Writer\Xls` if you really need
|
||||
calculated values, or force recalculation in Excel2003.
|
||||
|
||||
## Setting column width is not 100% accurate
|
||||
|
||||
Trying to set column width, I experience one problem. When I open the
|
||||
file in Excel, the actual width is 0.71 less than it should be.
|
||||
|
||||
The short answer is that PhpSpreadsheet uses a measure where padding is
|
||||
included. See [how to set a column's width](./topics/recipes.md#setting-a-columns-width)
|
||||
for more details.
|
102
inc/vendor/phpoffice/phpspreadsheet/docs/index.md
vendored
Normal file
@ -0,0 +1,102 @@
|
||||
# Welcome to PhpSpreadsheet's documentation
|
||||
|
||||

|
||||
|
||||
PhpSpreadsheet is a library written in pure PHP and providing a set of
|
||||
classes that allow you to read from and to write to different
|
||||
spreadsheet file formats, like Excel and LibreOffice Calc.
|
||||
|
||||
## File formats supported
|
||||
|
||||
|Format |Reading|Writing|
|
||||
|--------------------------------------------|:-----:|:-----:|
|
||||
|Open Document Format/OASIS (.ods) | ✓ | ✓ |
|
||||
|Office Open XML (.xlsx) Excel 2007 and above| ✓ | ✓ |
|
||||
|BIFF 8 (.xls) Excel 97 and above | ✓ | ✓ |
|
||||
|BIFF 5 (.xls) Excel 95 | ✓ | |
|
||||
|SpreadsheetML (.xml) Excel 2003 | ✓ | |
|
||||
|Gnumeric | ✓ | |
|
||||
|HTML | ✓ | ✓ |
|
||||
|SYLK | ✓ | |
|
||||
|CSV | ✓ | ✓ |
|
||||
|PDF (using either the TCPDF, Dompdf or mPDF libraries, which need to be installed separately)| | ✓ |
|
||||
|
||||
# Getting started
|
||||
|
||||
## Software requirements
|
||||
|
||||
The following software is required to develop using PhpSpreadsheet:
|
||||
|
||||
- PHP version 5.6 or newer
|
||||
- PHP extension php\_zip enabled
|
||||
- PHP extension php\_xml enabled
|
||||
- PHP extension php\_gd2 enabled (if not compiled in)
|
||||
|
||||
### PHP version support
|
||||
|
||||
Support for PHP versions will only be maintained for a period of six months beyond the end-of-life of that PHP version
|
||||
|
||||
## Installation
|
||||
|
||||
Use [composer](https://getcomposer.org/) to install PhpSpreadsheet into your project:
|
||||
|
||||
```sh
|
||||
composer require phpoffice/phpspreadsheet
|
||||
```
|
||||
|
||||
**Note:** If you want the unreleased, unstable development version use
|
||||
`phpoffice/phpspreadsheet:dev-develop` instead.
|
||||
|
||||
## Hello World
|
||||
|
||||
This would be the simplest way to write a spreadsheet:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
$sheet->setCellValue('A1', 'Hello World !');
|
||||
|
||||
$writer = new Xlsx($spreadsheet);
|
||||
$writer->save('hello world.xlsx');
|
||||
```
|
||||
|
||||
## Learn by example
|
||||
|
||||
A good way to get started is to run some of the samples. Serve the samples via
|
||||
PHP built-in webserver:
|
||||
|
||||
```sh
|
||||
php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
|
||||
```
|
||||
|
||||
Then point your browser to:
|
||||
|
||||
> http://localhost:8000/
|
||||
|
||||
The samples may also be run directly from the command line, for example:
|
||||
|
||||
```sh
|
||||
php vendor/phpoffice/phpspreadsheet/samples/01_Simple.php
|
||||
```
|
||||
|
||||
## Learn by documentation
|
||||
|
||||
For more in-depth documentation, you may read about an [overview of the
|
||||
architecture](./topics/architecture.md),
|
||||
[creating a spreadsheet](./topics/creating-spreadsheet.md),
|
||||
[worksheets](./topics/worksheets.md),
|
||||
[accessing cells](./topics/accessing-cells.md) and
|
||||
[reading and writing to files](./topics/reading-and-writing-to-file.md).
|
||||
|
||||
# Credits
|
||||
|
||||
Please refer to the [contributor
|
||||
list](https://github.com/PHPOffice/PhpSpreadsheet/graphs/contributors)
|
||||
for up-to-date credits.
|
1573
inc/vendor/phpoffice/phpspreadsheet/docs/references/features-cross-reference.md
vendored
Normal file
411
inc/vendor/phpoffice/phpspreadsheet/docs/references/function-list-by-category.md
vendored
Normal file
@ -0,0 +1,411 @@
|
||||
# Function list by category
|
||||
|
||||
## CATEGORY_CUBE
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
CUBEKPIMEMBER | **Not yet Implemented**
|
||||
CUBEMEMBER | **Not yet Implemented**
|
||||
CUBEMEMBERPROPERTY | **Not yet Implemented**
|
||||
CUBERANKEDMEMBER | **Not yet Implemented**
|
||||
CUBESET | **Not yet Implemented**
|
||||
CUBESETCOUNT | **Not yet Implemented**
|
||||
CUBEVALUE | **Not yet Implemented**
|
||||
|
||||
## CATEGORY_DATABASE
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
DAVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
||||
DCOUNT | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
||||
DCOUNTA | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNTA
|
||||
DGET | \PhpOffice\PhpSpreadsheet\Calculation\Database::DGET
|
||||
DMAX | \PhpOffice\PhpSpreadsheet\Calculation\Database::DMAX
|
||||
DMIN | \PhpOffice\PhpSpreadsheet\Calculation\Database::DMIN
|
||||
DPRODUCT | \PhpOffice\PhpSpreadsheet\Calculation\Database::DPRODUCT
|
||||
DSTDEV | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSTDEV
|
||||
DSTDEVP | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSTDEVP
|
||||
DSUM | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSUM
|
||||
DVAR | \PhpOffice\PhpSpreadsheet\Calculation\Database::DVAR
|
||||
DVARP | \PhpOffice\PhpSpreadsheet\Calculation\Database::DVARP
|
||||
|
||||
## CATEGORY_DATE_AND_TIME
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
DATE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATE
|
||||
DATEDIF | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEDIF
|
||||
DATEVALUE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
||||
DAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
||||
DAYS360 | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
||||
EDATE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EDATE
|
||||
EOMONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EOMONTH
|
||||
HOUR | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::HOUROFDAY
|
||||
MINUTE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MINUTE
|
||||
MONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MONTHOFYEAR
|
||||
NETWORKDAYS | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
||||
NOW | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATETIMENOW
|
||||
SECOND | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::SECOND
|
||||
TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIME
|
||||
TIMEVALUE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIMEVALUE
|
||||
TODAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATENOW
|
||||
WEEKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKDAY
|
||||
WEEKNUM | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
||||
WORKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
||||
YEAR | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEAR
|
||||
YEARFRAC | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEARFRAC
|
||||
|
||||
## CATEGORY_ENGINEERING
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
BESSELI | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELI
|
||||
BESSELJ | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELJ
|
||||
BESSELK | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELK
|
||||
BESSELY | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELY
|
||||
BIN2DEC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTODEC
|
||||
BIN2HEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
||||
BIN2OCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOOCT
|
||||
COMPLEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::COMPLEX
|
||||
CONVERT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::CONVERTUOM
|
||||
DEC2BIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOBIN
|
||||
DEC2HEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOHEX
|
||||
DEC2OCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOOCT
|
||||
DELTA | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DELTA
|
||||
ERF | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::ERF
|
||||
ERFC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::ERFC
|
||||
GESTEP | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::GESTEP
|
||||
HEX2BIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTOBIN
|
||||
HEX2DEC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTODEC
|
||||
HEX2OCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTOOCT
|
||||
IMABS | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMABS
|
||||
IMAGINARY | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMAGINARY
|
||||
IMARGUMENT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMARGUMENT
|
||||
IMCONJUGATE | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMCONJUGATE
|
||||
IMCOS | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMCOS
|
||||
IMDIV | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMDIV
|
||||
IMEXP | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMEXP
|
||||
IMLN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLN
|
||||
IMLOG10 | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLOG10
|
||||
IMLOG2 | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLOG2
|
||||
IMPOWER | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMPOWER
|
||||
IMPRODUCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMPRODUCT
|
||||
IMREAL | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMREAL
|
||||
IMSIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSIN
|
||||
IMSQRT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSQRT
|
||||
IMSUB | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSUB
|
||||
IMSUM | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSUM
|
||||
OCT2BIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTOBIN
|
||||
OCT2DEC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTODEC
|
||||
OCT2HEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTOHEX
|
||||
|
||||
## CATEGORY_FINANCIAL
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
ACCRINT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ACCRINT
|
||||
ACCRINTM | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ACCRINTM
|
||||
AMORDEGRC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::AMORDEGRC
|
||||
AMORLINC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::AMORLINC
|
||||
COUPDAYBS | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYBS
|
||||
COUPDAYS | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYS
|
||||
COUPDAYSNC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYSNC
|
||||
COUPNCD | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPNCD
|
||||
COUPNUM | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPNUM
|
||||
COUPPCD | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPPCD
|
||||
CUMIPMT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::CUMIPMT
|
||||
CUMPRINC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::CUMPRINC
|
||||
DB | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DB
|
||||
DDB | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DDB
|
||||
DISC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DISC
|
||||
DOLLARDE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DOLLARDE
|
||||
DOLLARFR | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DOLLARFR
|
||||
DURATION | **Not yet Implemented**
|
||||
EFFECT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::EFFECT
|
||||
FV | \PhpOffice\PhpSpreadsheet\Calculation\Financial::FV
|
||||
FVSCHEDULE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::FVSCHEDULE
|
||||
INTRATE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::INTRATE
|
||||
IPMT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::IPMT
|
||||
IRR | \PhpOffice\PhpSpreadsheet\Calculation\Financial::IRR
|
||||
ISPMT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ISPMT
|
||||
MDURATION | **Not yet Implemented**
|
||||
MIRR | \PhpOffice\PhpSpreadsheet\Calculation\Financial::MIRR
|
||||
NOMINAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NOMINAL
|
||||
NPER | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NPER
|
||||
NPV | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NPV
|
||||
ODDFPRICE | **Not yet Implemented**
|
||||
ODDFYIELD | **Not yet Implemented**
|
||||
ODDLPRICE | **Not yet Implemented**
|
||||
ODDLYIELD | **Not yet Implemented**
|
||||
PMT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PMT
|
||||
PPMT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PPMT
|
||||
PRICE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICE
|
||||
PRICEDISC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICEDISC
|
||||
PRICEMAT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICEMAT
|
||||
PV | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PV
|
||||
RATE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::RATE
|
||||
RECEIVED | \PhpOffice\PhpSpreadsheet\Calculation\Financial::RECEIVED
|
||||
SLN | \PhpOffice\PhpSpreadsheet\Calculation\Financial::SLN
|
||||
SYD | \PhpOffice\PhpSpreadsheet\Calculation\Financial::SYD
|
||||
TBILLEQ | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLEQ
|
||||
TBILLPRICE | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLPRICE
|
||||
TBILLYIELD | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLYIELD
|
||||
USDOLLAR | **Not yet Implemented**
|
||||
VDB | **Not yet Implemented**
|
||||
XIRR | \PhpOffice\PhpSpreadsheet\Calculation\Financial::XIRR
|
||||
XNPV | \PhpOffice\PhpSpreadsheet\Calculation\Financial::XNPV
|
||||
YIELD | **Not yet Implemented**
|
||||
YIELDDISC | \PhpOffice\PhpSpreadsheet\Calculation\Financial::YIELDDISC
|
||||
YIELDMAT | \PhpOffice\PhpSpreadsheet\Calculation\Financial::YIELDMAT
|
||||
|
||||
## CATEGORY_INFORMATION
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
CELL | **Not yet Implemented**
|
||||
ERROR.TYPE | \PhpOffice\PhpSpreadsheet\Calculation\Functions::ERROR_TYPE
|
||||
INFO | **Not yet Implemented**
|
||||
ISBLANK | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_BLANK
|
||||
ISERR | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ERR
|
||||
ISERROR | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ERROR
|
||||
ISEVEN | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_EVEN
|
||||
ISLOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_LOGICAL
|
||||
ISNA | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NA
|
||||
ISNONTEXT | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NONTEXT
|
||||
ISNUMBER | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NUMBER
|
||||
ISODD | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ODD
|
||||
ISREF | **Not yet Implemented**
|
||||
ISTEXT | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_TEXT
|
||||
N | \PhpOffice\PhpSpreadsheet\Calculation\Functions::N
|
||||
NA | \PhpOffice\PhpSpreadsheet\Calculation\Functions::NA
|
||||
TYPE | \PhpOffice\PhpSpreadsheet\Calculation\Functions::TYPE
|
||||
|
||||
## CATEGORY_LOGICAL
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
AND | \PhpOffice\PhpSpreadsheet\Calculation\Logical::LOGICAL_AND
|
||||
FALSE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::FALSE
|
||||
IF | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
||||
IFERROR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
||||
NOT | \PhpOffice\PhpSpreadsheet\Calculation\Logical::NOT
|
||||
OR | \PhpOffice\PhpSpreadsheet\Calculation\Logical::LOGICAL_OR
|
||||
TRUE | \PhpOffice\PhpSpreadsheet\Calculation\Logical::TRUE
|
||||
|
||||
## CATEGORY_LOOKUP_AND_REFERENCE
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
ADDRESS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CELL_ADDRESS
|
||||
AREAS | **Not yet Implemented**
|
||||
CHOOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CHOOSE
|
||||
COLUMN | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMN
|
||||
COLUMNS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMNS
|
||||
GETPIVOTDATA | **Not yet Implemented**
|
||||
HLOOKUP | **Not yet Implemented**
|
||||
HYPERLINK | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::HYPERLINK
|
||||
INDEX | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::INDEX
|
||||
INDIRECT | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::INDIRECT
|
||||
LOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::LOOKUP
|
||||
MATCH | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::MATCH
|
||||
OFFSET | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::OFFSET
|
||||
ROW | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROW
|
||||
ROWS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROWS
|
||||
RTD | **Not yet Implemented**
|
||||
TRANSPOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::TRANSPOSE
|
||||
VLOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::VLOOKUP
|
||||
|
||||
## CATEGORY_MATH_AND_TRIG
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
ABS | abs
|
||||
ACOS | acos
|
||||
ACOSH | acosh
|
||||
ASIN | asin
|
||||
ASINH | asinh
|
||||
ATAN | atan
|
||||
ATAN2 | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::REVERSE_ATAN2
|
||||
ATANH | atanh
|
||||
CEILING | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CEILING
|
||||
COMBIN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COMBIN
|
||||
COS | cos
|
||||
COSH | cosh
|
||||
DEGREES | rad2deg
|
||||
EVEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::EVEN
|
||||
EXP | exp
|
||||
FACT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FACT
|
||||
FACTDOUBLE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FACTDOUBLE
|
||||
FLOOR | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FLOOR
|
||||
GCD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::GCD
|
||||
INT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::INT
|
||||
LCM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LCM
|
||||
LN | log
|
||||
LOG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LOG_BASE
|
||||
LOG10 | log10
|
||||
MDETERM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MDETERM
|
||||
MINVERSE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MINVERSE
|
||||
MMULT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MMULT
|
||||
MOD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MOD
|
||||
MROUND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MROUND
|
||||
MULTINOMIAL | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MULTINOMIAL
|
||||
ODD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ODD
|
||||
PI | pi
|
||||
POWER | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::POWER
|
||||
PRODUCT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::PRODUCT
|
||||
QUOTIENT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::QUOTIENT
|
||||
RADIANS | deg2rad
|
||||
RAND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||
RANDBETWEEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||
ROMAN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROMAN
|
||||
ROUND | round
|
||||
ROUNDDOWN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROUNDDOWN
|
||||
ROUNDUP | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROUNDUP
|
||||
SERIESSUM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SERIESSUM
|
||||
SIGN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SIGN
|
||||
SIN | sin
|
||||
SINH | sinh
|
||||
SQRT | sqrt
|
||||
SQRTPI | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SQRTPI
|
||||
SUBTOTAL | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUBTOTAL
|
||||
SUM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUM
|
||||
SUMIF | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMIF
|
||||
SUMIFS | **Not yet Implemented**
|
||||
SUMPRODUCT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMPRODUCT
|
||||
SUMSQ | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMSQ
|
||||
SUMX2MY2 | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMX2MY2
|
||||
SUMX2PY2 | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMX2PY2
|
||||
SUMXMY2 | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMXMY2
|
||||
TAN | tan
|
||||
TANH | tanh
|
||||
TRUNC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::TRUNC
|
||||
|
||||
## CATEGORY_STATISTICAL
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
AVEDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVEDEV
|
||||
AVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGE
|
||||
AVERAGEA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEA
|
||||
AVERAGEIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEIF
|
||||
AVERAGEIFS | **Not yet Implemented**
|
||||
BETADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETADIST
|
||||
BETAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETAINV
|
||||
BINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
||||
CHIDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIDIST
|
||||
CHIINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIINV
|
||||
CHITEST | **Not yet Implemented**
|
||||
CONFIDENCE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CONFIDENCE
|
||||
CORREL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||
COUNT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNT
|
||||
COUNTA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTA
|
||||
COUNTBLANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTBLANK
|
||||
COUNTIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIF
|
||||
COUNTIFS | **Not yet Implemented**
|
||||
COVAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COVAR
|
||||
CRITBINOM | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CRITBINOM
|
||||
DEVSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::DEVSQ
|
||||
EXPONDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::EXPONDIST
|
||||
FDIST | **Not yet Implemented**
|
||||
FINV | **Not yet Implemented**
|
||||
FISHER | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHER
|
||||
FISHERINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHERINV
|
||||
FORECAST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FORECAST
|
||||
FREQUENCY | **Not yet Implemented**
|
||||
FTEST | **Not yet Implemented**
|
||||
GAMMADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMADIST
|
||||
GAMMAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMAINV
|
||||
GAMMALN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMALN
|
||||
GEOMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GEOMEAN
|
||||
GROWTH | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GROWTH
|
||||
HARMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HARMEAN
|
||||
HYPGEOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HYPGEOMDIST
|
||||
INTERCEPT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::INTERCEPT
|
||||
KURT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::KURT
|
||||
LARGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LARGE
|
||||
LINEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LINEST
|
||||
LOGEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGEST
|
||||
LOGINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGINV
|
||||
LOGNORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGNORMDIST
|
||||
MAX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAX
|
||||
MAXA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXA
|
||||
MAXIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXIF
|
||||
MEDIAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MEDIAN
|
||||
MEDIANIF | **Not yet Implemented**
|
||||
MIN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MIN
|
||||
MINA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINA
|
||||
MINIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINIF
|
||||
MODE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
||||
NEGBINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
||||
NORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
||||
NORMINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
||||
NORMSDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSDIST
|
||||
NORMSINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSINV
|
||||
PEARSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||
PERCENTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTILE
|
||||
PERCENTRANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTRANK
|
||||
PERMUT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERMUT
|
||||
POISSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::POISSON
|
||||
PROB | **Not yet Implemented**
|
||||
QUARTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::QUARTILE
|
||||
RANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RANK
|
||||
RSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RSQ
|
||||
SKEW | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SKEW
|
||||
SLOPE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SLOPE
|
||||
SMALL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SMALL
|
||||
STANDARDIZE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STANDARDIZE
|
||||
STDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
||||
STDEVA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVA
|
||||
STDEVP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
||||
STDEVPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVPA
|
||||
STEYX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STEYX
|
||||
TDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TDIST
|
||||
TINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TINV
|
||||
TREND | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TREND
|
||||
TRIMMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TRIMMEAN
|
||||
TTEST | **Not yet Implemented**
|
||||
VAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
||||
VARA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARA
|
||||
VARP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
||||
VARPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARPA
|
||||
WEIBULL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
||||
ZTEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::ZTEST
|
||||
|
||||
## CATEGORY_TEXT_AND_DATA
|
||||
|
||||
Excel Function | PhpSpreadsheet Function
|
||||
--------------------|-------------------------------------------
|
||||
ASC | **Not yet Implemented**
|
||||
BAHTTEXT | **Not yet Implemented**
|
||||
CHAR | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CHARACTER
|
||||
CLEAN | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TRIMNONPRINTABLE
|
||||
CODE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
||||
CONCATENATE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
||||
DOLLAR | \PhpOffice\PhpSpreadsheet\Calculation\TextData::DOLLAR
|
||||
EXACT | **Not yet Implemented**
|
||||
FIND | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
||||
FINDB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
||||
FIXED | \PhpOffice\PhpSpreadsheet\Calculation\TextData::FIXEDFORMAT
|
||||
JIS | **Not yet Implemented**
|
||||
LEFT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LEFT
|
||||
LEFTB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LEFT
|
||||
LEN | \PhpOffice\PhpSpreadsheet\Calculation\TextData::STRINGLENGTH
|
||||
LENB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::STRINGLENGTH
|
||||
LOWER | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LOWERCASE
|
||||
MID | \PhpOffice\PhpSpreadsheet\Calculation\TextData::MID
|
||||
MIDB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::MID
|
||||
PHONETIC | **Not yet Implemented**
|
||||
PROPER | \PhpOffice\PhpSpreadsheet\Calculation\TextData::PROPERCASE
|
||||
REPLACE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::REPLACE
|
||||
REPLACEB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::REPLACE
|
||||
REPT | str_repeat
|
||||
RIGHT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RIGHT
|
||||
RIGHTB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RIGHT
|
||||
SEARCH | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHINSENSITIVE
|
||||
SEARCHB | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHINSENSITIVE
|
||||
SUBSTITUTE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SUBSTITUTE
|
||||
T | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RETURNSTRING
|
||||
TEXT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TEXTFORMAT
|
||||
TRIM | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TRIMSPACES
|
||||
UPPER | \PhpOffice\PhpSpreadsheet\Calculation\TextData::UPPERCASE
|
||||
VALUE | **Not yet Implemented**
|
486
inc/vendor/phpoffice/phpspreadsheet/docs/references/function-list-by-name.md
vendored
Normal file
@ -0,0 +1,486 @@
|
||||
# Function list by name
|
||||
|
||||
## A
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
ABS | CATEGORY_MATH_AND_TRIG | abs
|
||||
ACCRINT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ACCRINT
|
||||
ACCRINTM | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ACCRINTM
|
||||
ACOS | CATEGORY_MATH_AND_TRIG | acos
|
||||
ACOSH | CATEGORY_MATH_AND_TRIG | acosh
|
||||
ADDRESS | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CELL_ADDRESS
|
||||
AMORDEGRC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::AMORDEGRC
|
||||
AMORLINC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::AMORLINC
|
||||
AND | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::LOGICAL_AND
|
||||
AREAS | CATEGORY_LOOKUP_AND_REFERENCE | **Not yet Implemented**
|
||||
ASC | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
ASIN | CATEGORY_MATH_AND_TRIG | asin
|
||||
ASINH | CATEGORY_MATH_AND_TRIG | asinh
|
||||
ATAN | CATEGORY_MATH_AND_TRIG | atan
|
||||
ATAN2 | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::REVERSE_ATAN2
|
||||
ATANH | CATEGORY_MATH_AND_TRIG | atanh
|
||||
AVEDEV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVEDEV
|
||||
AVERAGE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGE
|
||||
AVERAGEA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEA
|
||||
AVERAGEIF | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEIF
|
||||
AVERAGEIFS | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
|
||||
## B
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
BAHTTEXT | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
BESSELI | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELI
|
||||
BESSELJ | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELJ
|
||||
BESSELK | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELK
|
||||
BESSELY | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELY
|
||||
BETADIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETADIST
|
||||
BETAINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETAINV
|
||||
BIN2DEC | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTODEC
|
||||
BIN2HEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
||||
BIN2OCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOOCT
|
||||
BINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
||||
|
||||
## C
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
CEILING | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CEILING
|
||||
CELL | CATEGORY_INFORMATION | **Not yet Implemented**
|
||||
CHAR | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CHARACTER
|
||||
CHIDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIDIST
|
||||
CHIINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIINV
|
||||
CHITEST | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
CHOOSE | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CHOOSE
|
||||
CLEAN | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TRIMNONPRINTABLE
|
||||
CODE | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
||||
COLUMN | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMN
|
||||
COLUMNS | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMNS
|
||||
COMBIN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COMBIN
|
||||
COMPLEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::COMPLEX
|
||||
CONCATENATE | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
||||
CONFIDENCE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CONFIDENCE
|
||||
CONVERT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::CONVERTUOM
|
||||
CORREL | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||
COS | CATEGORY_MATH_AND_TRIG | cos
|
||||
COSH | CATEGORY_MATH_AND_TRIG | cosh
|
||||
COUNT | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNT
|
||||
COUNTA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTA
|
||||
COUNTBLANK | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTBLANK
|
||||
COUNTIF | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIF
|
||||
COUNTIFS | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
COUPDAYBS | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYBS
|
||||
COUPDAYS | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYS
|
||||
COUPDAYSNC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPDAYSNC
|
||||
COUPNCD | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPNCD
|
||||
COUPNUM | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPNUM
|
||||
COUPPCD | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::COUPPCD
|
||||
COVAR | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COVAR
|
||||
CRITBINOM | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CRITBINOM
|
||||
CUBEKPIMEMBER | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBEMEMBER | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBEMEMBERPROPERTY | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBERANKEDMEMBER | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBESET | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBESETCOUNT | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUBEVALUE | CATEGORY_CUBE | **Not yet Implemented**
|
||||
CUMIPMT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::CUMIPMT
|
||||
CUMPRINC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::CUMPRINC
|
||||
|
||||
## D
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
DATE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATE
|
||||
DATEDIF | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEDIF
|
||||
DATEVALUE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
||||
DAVERAGE | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
||||
DAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
||||
DAYS360 | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
||||
DB | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DB
|
||||
DCOUNT | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
||||
DCOUNTA | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNTA
|
||||
DDB | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DDB
|
||||
DEC2BIN | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOBIN
|
||||
DEC2HEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOHEX
|
||||
DEC2OCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOOCT
|
||||
DEGREES | CATEGORY_MATH_AND_TRIG | rad2deg
|
||||
DELTA | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DELTA
|
||||
DEVSQ | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::DEVSQ
|
||||
DGET | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DGET
|
||||
DISC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DISC
|
||||
DMAX | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DMAX
|
||||
DMIN | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DMIN
|
||||
DOLLAR | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::DOLLAR
|
||||
DOLLARDE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DOLLARDE
|
||||
DOLLARFR | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DOLLARFR
|
||||
DPRODUCT | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DPRODUCT
|
||||
DSTDEV | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSTDEV
|
||||
DSTDEVP | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSTDEVP
|
||||
DSUM | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DSUM
|
||||
DURATION | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
DVAR | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DVAR
|
||||
DVARP | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DVARP
|
||||
|
||||
## E
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
EDATE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EDATE
|
||||
EFFECT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::EFFECT
|
||||
EOMONTH | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EOMONTH
|
||||
ERF | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::ERF
|
||||
ERFC | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::ERFC
|
||||
ERROR.TYPE | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::ERROR_TYPE
|
||||
EVEN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::EVEN
|
||||
EXACT | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
EXP | CATEGORY_MATH_AND_TRIG | exp
|
||||
EXPONDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::EXPONDIST
|
||||
|
||||
## F
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
FACT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FACT
|
||||
FACTDOUBLE | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FACTDOUBLE
|
||||
FALSE | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::FALSE
|
||||
FDIST | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
FIND | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
||||
FINDB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
||||
FINV | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
FISHER | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHER
|
||||
FISHERINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHERINV
|
||||
FIXED | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::FIXEDFORMAT
|
||||
FLOOR | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FLOOR
|
||||
FORECAST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FORECAST
|
||||
FREQUENCY | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
FTEST | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
FV | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::FV
|
||||
FVSCHEDULE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::FVSCHEDULE
|
||||
|
||||
## G
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
GAMMADIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMADIST
|
||||
GAMMAINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMAINV
|
||||
GAMMALN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMALN
|
||||
GCD | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::GCD
|
||||
GEOMEAN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GEOMEAN
|
||||
GESTEP | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::GESTEP
|
||||
GETPIVOTDATA | CATEGORY_LOOKUP_AND_REFERENCE | **Not yet Implemented**
|
||||
GROWTH | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GROWTH
|
||||
|
||||
## H
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
HARMEAN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HARMEAN
|
||||
HEX2BIN | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTOBIN
|
||||
HEX2DEC | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTODEC
|
||||
HEX2OCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::HEXTOOCT
|
||||
HLOOKUP | CATEGORY_LOOKUP_AND_REFERENCE | **Not yet Implemented**
|
||||
HOUR | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::HOUROFDAY
|
||||
HYPERLINK | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::HYPERLINK
|
||||
HYPGEOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HYPGEOMDIST
|
||||
|
||||
## I
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
IF | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::STATEMENT_IF
|
||||
IFERROR | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::IFERROR
|
||||
IMABS | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMABS
|
||||
IMAGINARY | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMAGINARY
|
||||
IMARGUMENT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMARGUMENT
|
||||
IMCONJUGATE | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMCONJUGATE
|
||||
IMCOS | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMCOS
|
||||
IMDIV | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMDIV
|
||||
IMEXP | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMEXP
|
||||
IMLN | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLN
|
||||
IMLOG10 | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLOG10
|
||||
IMLOG2 | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMLOG2
|
||||
IMPOWER | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMPOWER
|
||||
IMPRODUCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMPRODUCT
|
||||
IMREAL | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMREAL
|
||||
IMSIN | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSIN
|
||||
IMSQRT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSQRT
|
||||
IMSUB | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSUB
|
||||
IMSUM | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::IMSUM
|
||||
INDEX | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::INDEX
|
||||
INDIRECT | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::INDIRECT
|
||||
INFO | CATEGORY_INFORMATION | **Not yet Implemented**
|
||||
INT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::INT
|
||||
INTERCEPT | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::INTERCEPT
|
||||
INTRATE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::INTRATE
|
||||
IPMT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::IPMT
|
||||
IRR | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::IRR
|
||||
ISBLANK | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_BLANK
|
||||
ISERR | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ERR
|
||||
ISERROR | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ERROR
|
||||
ISEVEN | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_EVEN
|
||||
ISLOGICAL | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_LOGICAL
|
||||
ISNA | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NA
|
||||
ISNONTEXT | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NONTEXT
|
||||
ISNUMBER | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_NUMBER
|
||||
ISODD | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_ODD
|
||||
ISPMT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::ISPMT
|
||||
ISREF | CATEGORY_INFORMATION | **Not yet Implemented**
|
||||
ISTEXT | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::IS_TEXT
|
||||
|
||||
## J
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
JIS | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
|
||||
## K
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
KURT | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::KURT
|
||||
|
||||
## L
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
LARGE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LARGE
|
||||
LCM | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LCM
|
||||
LEFT | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LEFT
|
||||
LEFTB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LEFT
|
||||
LEN | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::STRINGLENGTH
|
||||
LENB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::STRINGLENGTH
|
||||
LINEST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LINEST
|
||||
LN | CATEGORY_MATH_AND_TRIG | log
|
||||
LOG | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LOG_BASE
|
||||
LOG10 | CATEGORY_MATH_AND_TRIG | log10
|
||||
LOGEST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGEST
|
||||
LOGINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGINV
|
||||
LOGNORMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGNORMDIST
|
||||
LOOKUP | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::LOOKUP
|
||||
LOWER | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::LOWERCASE
|
||||
|
||||
## M
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
MATCH | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::MATCH
|
||||
MAX | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAX
|
||||
MAXA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXA
|
||||
MAXIF | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXIF
|
||||
MDETERM | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MDETERM
|
||||
MDURATION | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
MEDIAN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MEDIAN
|
||||
MEDIANIF | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
MID | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::MID
|
||||
MIDB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::MID
|
||||
MIN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MIN
|
||||
MINA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINA
|
||||
MINIF | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINIF
|
||||
MINUTE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MINUTE
|
||||
MINVERSE | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MINVERSE
|
||||
MIRR | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::MIRR
|
||||
MMULT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MMULT
|
||||
MOD | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MOD
|
||||
MODE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
||||
MONTH | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MONTHOFYEAR
|
||||
MROUND | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MROUND
|
||||
MULTINOMIAL | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MULTINOMIAL
|
||||
|
||||
## N
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
N | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::N
|
||||
NA | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::NA
|
||||
NEGBINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
||||
NETWORKDAYS | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
||||
NOMINAL | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NOMINAL
|
||||
NORMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
||||
NORMINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
||||
NORMSDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSDIST
|
||||
NORMSINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSINV
|
||||
NOT | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::NOT
|
||||
NOW | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATETIMENOW
|
||||
NPER | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NPER
|
||||
NPV | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NPV
|
||||
|
||||
## O
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
OCT2BIN | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTOBIN
|
||||
OCT2DEC | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTODEC
|
||||
OCT2HEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::OCTTOHEX
|
||||
ODD | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ODD
|
||||
ODDFPRICE | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
ODDFYIELD | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
ODDLPRICE | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
ODDLYIELD | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
OFFSET | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::OFFSET
|
||||
OR | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::LOGICAL_OR
|
||||
|
||||
## P
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
PEARSON | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||
PERCENTILE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTILE
|
||||
PERCENTRANK | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTRANK
|
||||
PERMUT | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERMUT
|
||||
PHONETIC | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
PI | CATEGORY_MATH_AND_TRIG | pi
|
||||
PMT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PMT
|
||||
POISSON | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::POISSON
|
||||
POWER | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::POWER
|
||||
PPMT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PPMT
|
||||
PRICE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICE
|
||||
PRICEDISC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICEDISC
|
||||
PRICEMAT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PRICEMAT
|
||||
PROB | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
PRODUCT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::PRODUCT
|
||||
PROPER | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::PROPERCASE
|
||||
PV | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::PV
|
||||
|
||||
## Q
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
QUARTILE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::QUARTILE
|
||||
QUOTIENT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::QUOTIENT
|
||||
|
||||
## R
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
RADIANS | CATEGORY_MATH_AND_TRIG | deg2rad
|
||||
RAND | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||
RANDBETWEEN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||
RANK | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RANK
|
||||
RATE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::RATE
|
||||
RECEIVED | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::RECEIVED
|
||||
REPLACE | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::REPLACE
|
||||
REPLACEB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::REPLACE
|
||||
REPT | CATEGORY_TEXT_AND_DATA | str_repeat
|
||||
RIGHT | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RIGHT
|
||||
RIGHTB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RIGHT
|
||||
ROMAN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROMAN
|
||||
ROUND | CATEGORY_MATH_AND_TRIG | round
|
||||
ROUNDDOWN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROUNDDOWN
|
||||
ROUNDUP | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROUNDUP
|
||||
ROW | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROW
|
||||
ROWS | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROWS
|
||||
RSQ | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RSQ
|
||||
RTD | CATEGORY_LOOKUP_AND_REFERENCE | **Not yet Implemented**
|
||||
|
||||
## S
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
SEARCH | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHINSENSITIVE
|
||||
SEARCHB | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHINSENSITIVE
|
||||
SECOND | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::SECOND
|
||||
SERIESSUM | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SERIESSUM
|
||||
SIGN | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SIGN
|
||||
SIN | CATEGORY_MATH_AND_TRIG | sin
|
||||
SINH | CATEGORY_MATH_AND_TRIG | sinh
|
||||
SKEW | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SKEW
|
||||
SLN | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::SLN
|
||||
SLOPE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SLOPE
|
||||
SMALL | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SMALL
|
||||
SQRT | CATEGORY_MATH_AND_TRIG | sqrt
|
||||
SQRTPI | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SQRTPI
|
||||
STANDARDIZE | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STANDARDIZE
|
||||
STDEV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
||||
STDEVA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVA
|
||||
STDEVP | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
||||
STDEVPA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVPA
|
||||
STEYX | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STEYX
|
||||
SUBSTITUTE | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SUBSTITUTE
|
||||
SUBTOTAL | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUBTOTAL
|
||||
SUM | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUM
|
||||
SUMIF | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMIF
|
||||
SUMIFS | CATEGORY_MATH_AND_TRIG | **Not yet Implemented**
|
||||
SUMPRODUCT | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMPRODUCT
|
||||
SUMSQ | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMSQ
|
||||
SUMX2MY2 | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMX2MY2
|
||||
SUMX2PY2 | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMX2PY2
|
||||
SUMXMY2 | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SUMXMY2
|
||||
SYD | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::SYD
|
||||
|
||||
## T
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
T | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::RETURNSTRING
|
||||
TAN | CATEGORY_MATH_AND_TRIG | tan
|
||||
TANH | CATEGORY_MATH_AND_TRIG | tanh
|
||||
TBILLEQ | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLEQ
|
||||
TBILLPRICE | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLPRICE
|
||||
TBILLYIELD | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::TBILLYIELD
|
||||
TDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TDIST
|
||||
TEXT | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TEXTFORMAT
|
||||
TIME | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIME
|
||||
TIMEVALUE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIMEVALUE
|
||||
TINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TINV
|
||||
TODAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATENOW
|
||||
TRANSPOSE | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::TRANSPOSE
|
||||
TREND | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TREND
|
||||
TRIM | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TRIMSPACES
|
||||
TRIMMEAN | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TRIMMEAN
|
||||
TRUE | CATEGORY_LOGICAL | \PhpOffice\PhpSpreadsheet\Calculation\Logical::TRUE
|
||||
TRUNC | CATEGORY_MATH_AND_TRIG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::TRUNC
|
||||
TTEST | CATEGORY_STATISTICAL | **Not yet Implemented**
|
||||
TYPE | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::TYPE
|
||||
|
||||
## U
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
UPPER | CATEGORY_TEXT_AND_DATA | \PhpOffice\PhpSpreadsheet\Calculation\TextData::UPPERCASE
|
||||
USDOLLAR | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
|
||||
## V
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
VALUE | CATEGORY_TEXT_AND_DATA | **Not yet Implemented**
|
||||
VAR | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
||||
VARA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARA
|
||||
VARP | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
||||
VARPA | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARPA
|
||||
VDB | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
VLOOKUP | CATEGORY_LOOKUP_AND_REFERENCE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::VLOOKUP
|
||||
|
||||
## W
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
WEEKDAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKDAY
|
||||
WEEKNUM | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
||||
WEIBULL | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
||||
WORKDAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
||||
|
||||
## X
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
XIRR | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::XIRR
|
||||
XNPV | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::XNPV
|
||||
|
||||
## Y
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
YEAR | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEAR
|
||||
YEARFRAC | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEARFRAC
|
||||
YIELD | CATEGORY_FINANCIAL | **Not yet Implemented**
|
||||
YIELDDISC | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::YIELDDISC
|
||||
YIELDMAT | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::YIELDMAT
|
||||
|
||||
## Z
|
||||
|
||||
Excel Function | Category | PhpSpreadsheet Function
|
||||
--------------------|--------------------------------|-------------------------------------------
|
||||
ZTEST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::ZTEST
|
474
inc/vendor/phpoffice/phpspreadsheet/docs/topics/accessing-cells.md
vendored
Normal file
@ -0,0 +1,474 @@
|
||||
# Accessing cells
|
||||
|
||||
Accessing cells in a Spreadsheet should be pretty straightforward. This
|
||||
topic lists some of the options to access a cell.
|
||||
|
||||
## Setting a cell value by coordinate
|
||||
|
||||
Setting a cell value by coordinate can be done using the worksheet's
|
||||
`setCellValue()` method.
|
||||
|
||||
``` php
|
||||
// Set cell A1 with a string value
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'PhpSpreadsheet');
|
||||
|
||||
// Set cell A2 with a numeric value
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A2', 12345.6789);
|
||||
|
||||
// Set cell A3 with a boolean value
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A3', TRUE);
|
||||
|
||||
// Set cell A4 with a formula
|
||||
$spreadsheet->getActiveSheet()->setCellValue(
|
||||
'A4',
|
||||
'=IF(A3, CONCATENATE(A1, " ", A2), CONCATENATE(A2, " ", A1))'
|
||||
);
|
||||
```
|
||||
|
||||
Alternatively, you can retrieve the cell object, and then call the
|
||||
cell’s `setValue()` method:
|
||||
|
||||
``` php
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getCell('B8')
|
||||
->setValue('Some value');
|
||||
```
|
||||
|
||||
## Excel DataTypes
|
||||
|
||||
MS Excel supports 7 basic datatypes:
|
||||
|
||||
- string
|
||||
- number
|
||||
- boolean
|
||||
- null
|
||||
- formula
|
||||
- error
|
||||
- Inline (or rich text) string
|
||||
|
||||
By default, when you call the worksheet's `setCellValue()` method or the
|
||||
cell's `setValue()` method, PhpSpreadsheet will use the appropriate
|
||||
datatype for PHP nulls, booleans, floats or integers; or cast any string
|
||||
data value that you pass to the method into the most appropriate
|
||||
datatype, so numeric strings will be cast to numbers, while string
|
||||
values beginning with `=` will be converted to a formula. Strings that
|
||||
aren't numeric, or that don't begin with a leading `=` will be treated
|
||||
as genuine string values.
|
||||
|
||||
This "conversion" is handled by a cell "value binder", and you can write
|
||||
custom "value binders" to change the behaviour of these "conversions".
|
||||
The standard PhpSpreadsheet package also provides an "advanced value
|
||||
binder" that handles a number of more complex conversions, such as
|
||||
converting strings with a fractional format like "3/4" to a number value
|
||||
(0.75 in this case) and setting an appropriate "fraction" number format
|
||||
mask. Similarly, strings like "5%" will be converted to a value of 0.05,
|
||||
and a percentage number format mask applied, and strings containing
|
||||
values that look like dates will be converted to Excel serialized
|
||||
datetimestamp values, and a corresponding mask applied. This is
|
||||
particularly useful when loading data from csv files, or setting cell
|
||||
values from a database.
|
||||
|
||||
Formats handled by the advanced value binder include:
|
||||
|
||||
- TRUE or FALSE (dependent on locale settings) are converted to booleans.
|
||||
- Numeric strings identified as scientific (exponential) format are
|
||||
converted to numbers.
|
||||
- Fractions and vulgar fractions are converted to numbers, and
|
||||
an appropriate number format mask applied.
|
||||
- Percentages are converted
|
||||
to numbers, divided by 100, and an appropriate number format mask
|
||||
applied.
|
||||
- Dates and times are converted to Excel timestamp values
|
||||
(numbers), and an appropriate number format mask applied.
|
||||
- When strings contain a newline character (`\n`), then the cell styling is
|
||||
set to wrap.
|
||||
|
||||
You can read more about value binders later in this section of the
|
||||
documentation.
|
||||
|
||||
### Setting a date and/or time value in a cell
|
||||
|
||||
Date or time values are held as timestamp in Excel (a simple floating
|
||||
point value), and a number format mask is used to show how that value
|
||||
should be formatted; so if we want to store a date in a cell, we need to
|
||||
calculate the correct Excel timestamp, and set a number format mask.
|
||||
|
||||
``` php
|
||||
// Get the current date/time and convert to an Excel date/time
|
||||
$dateTimeNow = time();
|
||||
$excelDateValue = \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel( $dateTimeNow );
|
||||
// Set cell A6 with the Excel date/time value
|
||||
$spreadsheet->getActiveSheet()->setCellValue(
|
||||
'A6',
|
||||
$excelDateValue
|
||||
);
|
||||
// Set the number format mask so that the excel timestamp will be displayed as a human-readable date/time
|
||||
$spreadsheet->getActiveSheet()->getStyle('A6')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(
|
||||
\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME
|
||||
);
|
||||
```
|
||||
|
||||
### Setting a number with leading zeroes
|
||||
|
||||
By default, PhpSpreadsheet will automatically detect the value type and
|
||||
set it to the appropriate Excel numeric datatype. This type conversion
|
||||
is handled by a value binder, as described in the section of this
|
||||
document entitled "Using value binders to facilitate data entry".
|
||||
|
||||
Numbers don't have leading zeroes, so if you try to set a numeric value
|
||||
that does have leading zeroes (such as a telephone number) then these
|
||||
will be normally be lost as the value is cast to a number, so
|
||||
"01513789642" will be displayed as 1513789642.
|
||||
|
||||
There are two ways you can force PhpSpreadsheet to override this
|
||||
behaviour.
|
||||
|
||||
Firstly, you can set the datatype explicitly as a string so that it is
|
||||
not converted to a number.
|
||||
|
||||
``` php
|
||||
// Set cell A8 with a numeric value, but tell PhpSpreadsheet it should be treated as a string
|
||||
$spreadsheet->getActiveSheet()->setCellValueExplicit(
|
||||
'A8',
|
||||
"01513789642",
|
||||
\PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING
|
||||
);
|
||||
```
|
||||
|
||||
Alternatively, you can use a number format mask to display the value
|
||||
with leading zeroes.
|
||||
|
||||
``` php
|
||||
// Set cell A9 with a numeric value
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A9', 1513789642);
|
||||
// Set a number format mask to display the value as 11 digits with leading zeroes
|
||||
$spreadsheet->getActiveSheet()->getStyle('A9')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(
|
||||
'00000000000'
|
||||
);
|
||||
```
|
||||
|
||||
With number format masking, you can even break up the digits into groups
|
||||
to make the value more easily readable.
|
||||
|
||||
``` php
|
||||
// Set cell A10 with a numeric value
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A10', 1513789642);
|
||||
// Set a number format mask to display the value as 11 digits with leading zeroes
|
||||
$spreadsheet->getActiveSheet()->getStyle('A10')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(
|
||||
'0000-000-0000'
|
||||
);
|
||||
```
|
||||
|
||||

|
||||
|
||||
**Note:** that not all complex format masks such as this one will work
|
||||
when retrieving a formatted value to display "on screen", or for certain
|
||||
writers such as HTML or PDF, but it will work with the true spreadsheet
|
||||
writers (Xlsx and Xls).
|
||||
|
||||
## Setting a range of cells from an array
|
||||
|
||||
It is also possible to set a range of cell values in a single call by
|
||||
passing an array of values to the `fromArray()` method.
|
||||
|
||||
``` php
|
||||
$arrayData = array(
|
||||
array(NULL, 2010, 2011, 2012),
|
||||
array('Q1', 12, 15, 21),
|
||||
array('Q2', 56, 73, 86),
|
||||
array('Q3', 52, 61, 69),
|
||||
array('Q4', 30, 32, 0),
|
||||
);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->fromArray(
|
||||
$arrayData, // The data to set
|
||||
NULL, // Array values with this value will not be set
|
||||
'C3' // Top left coordinate of the worksheet range where
|
||||
// we want to set these values (default is A1)
|
||||
);
|
||||
```
|
||||
|
||||

|
||||
|
||||
If you pass a 2-d array, then this will be treated as a series of rows
|
||||
and columns. A 1-d array will be treated as a single row, which is
|
||||
particularly useful if you're fetching an array of data from a database.
|
||||
|
||||
``` php
|
||||
$rowArray = array('Value1', 'Value2', 'Value3', 'Value4');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->fromArray(
|
||||
$rowArray, // The data to set
|
||||
NULL, // Array values with this value will not be set
|
||||
'C3' // Top left coordinate of the worksheet range where
|
||||
// we want to set these values (default is A1)
|
||||
);
|
||||
```
|
||||
|
||||

|
||||
|
||||
If you have a simple 1-d array, and want to write it as a column, then
|
||||
the following will convert it into an appropriately structured 2-d array
|
||||
that can be fed to the `fromArray()` method:
|
||||
|
||||
``` php
|
||||
$rowArray = array('Value1', 'Value2', 'Value3', 'Value4');
|
||||
$columnArray = array_chunk($rowArray, 1);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->fromArray(
|
||||
$columnArray, // The data to set
|
||||
NULL, // Array values with this value will not be set
|
||||
'C3' // Top left coordinate of the worksheet range where
|
||||
// we want to set these values (default is A1)
|
||||
);
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Retrieving a cell value by coordinate
|
||||
|
||||
To retrieve the value of a cell, the cell should first be retrieved from
|
||||
the worksheet using the `getCell()` method. A cell's value can be read
|
||||
using the `getValue()` method.
|
||||
|
||||
``` php
|
||||
// Get the value from cell A1
|
||||
$cellValue = $spreadsheet->getActiveSheet()->getCell('A1')->getValue();
|
||||
```
|
||||
|
||||
This will retrieve the raw, unformatted value contained in the cell.
|
||||
|
||||
If a cell contains a formula, and you need to retrieve the calculated
|
||||
value rather than the formula itself, then use the cell's
|
||||
`getCalculatedValue()` method. This is further explained in
|
||||
[the calculation engine](./calculation-engine.md).
|
||||
|
||||
``` php
|
||||
// Get the value from cell A4
|
||||
$cellValue = $spreadsheet->getActiveSheet()->getCell('A4')->getCalculatedValue();
|
||||
```
|
||||
|
||||
Alternatively, if you want to see the value with any cell formatting
|
||||
applied (e.g. for a human-readable date or time value), then you can use
|
||||
the cell's `getFormattedValue()` method.
|
||||
|
||||
``` php
|
||||
// Get the value from cell A6
|
||||
$cellValue = $spreadsheet->getActiveSheet()->getCell('A6')->getFormattedValue();
|
||||
```
|
||||
|
||||
## Setting a cell value by column and row
|
||||
|
||||
Setting a cell value by coordinate can be done using the worksheet's
|
||||
`setCellValueByColumnAndRow()` method.
|
||||
|
||||
``` php
|
||||
// Set cell A5 with a string value
|
||||
$spreadsheet->getActiveSheet()->setCellValueByColumnAndRow(1, 5, 'PhpSpreadsheet');
|
||||
```
|
||||
|
||||
**Note:** that column references start with `1` for column `A`.
|
||||
|
||||
## Retrieving a cell value by column and row
|
||||
|
||||
To retrieve the value of a cell, the cell should first be retrieved from
|
||||
the worksheet using the `getCellByColumnAndRow()` method. A cell’s value can
|
||||
be read again using the following line of code:
|
||||
|
||||
``` php
|
||||
// Get the value from cell B5
|
||||
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 5)->getValue();
|
||||
```
|
||||
|
||||
If you need the calculated value of a cell, use the following code. This
|
||||
is further explained in [the calculation engine](./calculation-engine.md).
|
||||
|
||||
``` php
|
||||
// Get the value from cell A4
|
||||
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(1, 4)->getCalculatedValue();
|
||||
```
|
||||
|
||||
## Retrieving a range of cell values to an array
|
||||
|
||||
It is also possible to retrieve a range of cell values to an array in a
|
||||
single call using the `toArray()`, `rangeToArray()` or
|
||||
`namedRangeToArray()` methods.
|
||||
|
||||
``` php
|
||||
$dataArray = $spreadsheet->getActiveSheet()
|
||||
->rangeToArray(
|
||||
'C3:E5', // The worksheet range that we want to retrieve
|
||||
NULL, // Value that should be returned for empty cells
|
||||
TRUE, // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell)
|
||||
TRUE, // Should values be formatted (the equivalent of getFormattedValue() for each cell)
|
||||
TRUE // Should the array be indexed by cell row and cell column
|
||||
);
|
||||
```
|
||||
|
||||
These methods will all return a 2-d array of rows and columns. The
|
||||
`toArray()` method will return the whole worksheet; `rangeToArray()`
|
||||
will return a specified range or cells; while `namedRangeToArray()` will
|
||||
return the cells within a defined `named range`.
|
||||
|
||||
## Looping through cells
|
||||
|
||||
### Looping through cells using iterators
|
||||
|
||||
The easiest way to loop cells is by using iterators. Using iterators,
|
||||
one can use foreach to loop worksheets, rows within a worksheet, and
|
||||
cells within a row.
|
||||
|
||||
Below is an example where we read all the values in a worksheet and
|
||||
display them in a table.
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
|
||||
$reader->setReadDataOnly(TRUE);
|
||||
$spreadsheet = $reader->load("test.xlsx");
|
||||
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
echo '<table>' . PHP_EOL;
|
||||
foreach ($worksheet->getRowIterator() as $row) {
|
||||
echo '<tr>' . PHP_EOL;
|
||||
$cellIterator = $row->getCellIterator();
|
||||
$cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells,
|
||||
// even if a cell value is not set.
|
||||
// By default, only cells that have a value
|
||||
// set will be iterated.
|
||||
foreach ($cellIterator as $cell) {
|
||||
echo '<td>' .
|
||||
$cell->getValue() .
|
||||
'</td>' . PHP_EOL;
|
||||
}
|
||||
echo '</tr>' . PHP_EOL;
|
||||
}
|
||||
echo '</table>' . PHP_EOL;
|
||||
```
|
||||
|
||||
Note that we have set the cell iterator's
|
||||
`setIterateOnlyExistingCells()` to FALSE. This makes the iterator loop
|
||||
all cells within the worksheet range, even if they have not been set.
|
||||
|
||||
The cell iterator will return a `null` as the cell value if it is not
|
||||
set in the worksheet. Setting the cell iterator's
|
||||
`setIterateOnlyExistingCells()` to `false` will loop all cells in the
|
||||
worksheet that can be available at that moment. This will create new
|
||||
cells if required and increase memory usage! Only use it if it is
|
||||
intended to loop all cells that are possibly available.
|
||||
|
||||
### Looping through cells using indexes
|
||||
|
||||
One can use the possibility to access cell values by column and row
|
||||
index like `[1, 1]` instead of `'A1'` for reading and writing cell values in
|
||||
loops.
|
||||
|
||||
**Note:** In PhpSpreadsheet column index and row index are 1-based. That means `'A1'` ~ `[1, 1]`
|
||||
|
||||
Below is an example where we read all the values in a worksheet and
|
||||
display them in a table.
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
|
||||
$reader->setReadDataOnly(TRUE);
|
||||
$spreadsheet = $reader->load("test.xlsx");
|
||||
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
// Get the highest row and column numbers referenced in the worksheet
|
||||
$highestRow = $worksheet->getHighestRow(); // e.g. 10
|
||||
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
|
||||
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); // e.g. 5
|
||||
|
||||
echo '<table>' . "\n";
|
||||
for ($row = 1; $row <= $highestRow; ++$row) {
|
||||
echo '<tr>' . PHP_EOL;
|
||||
for ($col = 1; $col <= $highestColumnIndex; ++$col) {
|
||||
$value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
|
||||
echo '<td>' . $value . '</td>' . PHP_EOL;
|
||||
}
|
||||
echo '</tr>' . PHP_EOL;
|
||||
}
|
||||
echo '</table>' . PHP_EOL;
|
||||
```
|
||||
|
||||
Alternatively, you can take advantage of PHP's "Perl-style" character
|
||||
incrementors to loop through the cells by coordinate:
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
|
||||
$reader->setReadDataOnly(TRUE);
|
||||
$spreadsheet = $reader->load("test.xlsx");
|
||||
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
// Get the highest row number and column letter referenced in the worksheet
|
||||
$highestRow = $worksheet->getHighestRow(); // e.g. 10
|
||||
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
|
||||
// Increment the highest column letter
|
||||
$highestColumn++;
|
||||
|
||||
echo '<table>' . "\n";
|
||||
for ($row = 1; $row <= $highestRow; ++$row) {
|
||||
echo '<tr>' . PHP_EOL;
|
||||
for ($col = 'A'; $col != $highestColumn; ++$col) {
|
||||
echo '<td>' .
|
||||
$worksheet->getCell($col . $row)
|
||||
->getValue() .
|
||||
'</td>' . PHP_EOL;
|
||||
}
|
||||
echo '</tr>' . PHP_EOL;
|
||||
}
|
||||
echo '</table>' . PHP_EOL;
|
||||
```
|
||||
|
||||
Note that we can't use a <= comparison here, because 'AA' would match
|
||||
as <= 'B', so we increment the highest column letter and then loop
|
||||
while \$col != the incremented highest column.
|
||||
|
||||
## Using value binders to facilitate data entry
|
||||
|
||||
Internally, PhpSpreadsheet uses a default
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\IValueBinder` implementation
|
||||
(\PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder) to determine data
|
||||
types of entered data using a cell's `setValue()` method (the
|
||||
`setValueExplicit()` method bypasses this check).
|
||||
|
||||
Optionally, the default behaviour of PhpSpreadsheet can be modified,
|
||||
allowing easier data entry. For example, a
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder` class is available.
|
||||
It automatically converts percentages, number in scientific format, and
|
||||
dates entered as strings to the correct format, also setting the cell's
|
||||
style information. The following example demonstrates how to set the
|
||||
value binder in PhpSpreadsheet:
|
||||
|
||||
``` php
|
||||
/** PhpSpreadsheet */
|
||||
require_once 'src/Boostrap.php';
|
||||
|
||||
// Set value binder
|
||||
\PhpOffice\PhpSpreadsheet\Cell\Cell::setValueBinder( new \PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder() );
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
|
||||
// ...
|
||||
// Add some data, resembling some different data types
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A4', 'Percentage value:');
|
||||
// Converts the string value to 0.1 and sets percentage cell style
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B4', '10%');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A5', 'Date/time value:');
|
||||
// Converts the string value to an Excel datestamp and sets the date format cell style
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B5', '21 December 1983');
|
||||
```
|
||||
|
||||
**Creating your own value binder is easy.** When advanced value binding
|
||||
is required, you can implement the
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\IValueBinder` interface or extend the
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder` or
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder` classes.
|
75
inc/vendor/phpoffice/phpspreadsheet/docs/topics/architecture.md
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
# Architecture
|
||||
|
||||
## Schematical
|
||||
|
||||

|
||||
|
||||
## AutoLoader
|
||||
|
||||
PhpSpreadsheet relies on Composer autoloader. So before working with
|
||||
PhpSpreadsheet in standalone, be sure to run `composer install`. Or add it to a
|
||||
pre-existing project with `composer require phpoffice/phpspreadsheet`.
|
||||
|
||||
## Spreadsheet in memory
|
||||
|
||||
PhpSpreadsheet's architecture is built in a way that it can serve as an
|
||||
in-memory spreadsheet. This means that, if one would want to create a
|
||||
web based view of a spreadsheet which communicates with PhpSpreadsheet's
|
||||
object model, he would only have to write the front-end code.
|
||||
|
||||
Just like desktop spreadsheet software, PhpSpreadsheet represents a
|
||||
spreadsheet containing one or more worksheets, which contain cells with
|
||||
data, formulas, images, ...
|
||||
|
||||
## Readers and writers
|
||||
|
||||
On its own, the `Spreadsheet` class does not provide the functionality
|
||||
to read from or write to a persisted spreadsheet (on disk or in a
|
||||
database). To provide that functionality, readers and writers can be
|
||||
used.
|
||||
|
||||
By default, the PhpSpreadsheet package provides some readers and
|
||||
writers, including one for the Open XML spreadsheet format (a.k.a. Excel
|
||||
2007 file format). You are not limited to the default readers and
|
||||
writers, as you are free to implement the
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReader` and
|
||||
`\PhpOffice\PhpSpreadsheet\Writer\IWriter` interface in a custom class.
|
||||
|
||||

|
||||
|
||||
## Fluent interfaces
|
||||
|
||||
PhpSpreadsheet supports fluent interfaces in most locations. This means
|
||||
that you can easily "chain" calls to specific methods without requiring
|
||||
a new PHP statement. For example, take the following code:
|
||||
|
||||
``` php
|
||||
$spreadsheet->getProperties()->setCreator("Maarten Balliauw");
|
||||
$spreadsheet->getProperties()->setLastModifiedBy("Maarten Balliauw");
|
||||
$spreadsheet->getProperties()->setTitle("Office 2007 XLSX Test Document");
|
||||
$spreadsheet->getProperties()->setSubject("Office 2007 XLSX Test Document");
|
||||
$spreadsheet->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
|
||||
$spreadsheet->getProperties()->setKeywords("office 2007 openxml php");
|
||||
$spreadsheet->getProperties()->setCategory("Test result file");
|
||||
```
|
||||
|
||||
This can be rewritten as:
|
||||
|
||||
``` php
|
||||
$spreadsheet->getProperties()
|
||||
->setCreator("Maarten Balliauw")
|
||||
->setLastModifiedBy("Maarten Balliauw")
|
||||
->setTitle("Office 2007 XLSX Test Document")
|
||||
->setSubject("Office 2007 XLSX Test Document")
|
||||
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
|
||||
->setKeywords("office 2007 openxml php")
|
||||
->setCategory("Test result file");
|
||||
```
|
||||
|
||||
> **Using fluent interfaces is not required** Fluent interfaces have
|
||||
> been implemented to provide a convenient programming API. Use of them
|
||||
> is not required, but can make your code easier to read and maintain.
|
||||
> It can also improve performance, as you are reducing the overall
|
||||
> number of calls to PhpSpreadsheet methods: in the above example, the
|
||||
> `getProperties()` method is being called only once rather than 7 times
|
||||
> in the non-fluent version.
|
530
inc/vendor/phpoffice/phpspreadsheet/docs/topics/autofilters.md
vendored
Normal file
@ -0,0 +1,530 @@
|
||||
# AutoFilter Reference
|
||||
|
||||
## Introduction
|
||||
|
||||
Each worksheet in an Excel Workbook can contain a single autoFilter
|
||||
range. Filtered data displays only the rows that meet criteria that you
|
||||
specify and hides rows that you do not want displayed. You can filter by
|
||||
more than one column: filters are additive, which means that each
|
||||
additional filter is based on the current filter and further reduces the
|
||||
subset of data.
|
||||
|
||||

|
||||
|
||||
When an AutoFilter is applied to a range of cells, the first row in an
|
||||
autofilter range will be the heading row, which displays the autoFilter
|
||||
dropdown icons. It is not part of the actual autoFiltered data. All
|
||||
subsequent rows are the autoFiltered data. So an AutoFilter range should
|
||||
always contain the heading row and one or more data rows (one data row
|
||||
is pretty meaningless), but PhpSpreadsheet won't actually stop you
|
||||
specifying a meaningless range: it's up to you as a developer to avoid
|
||||
such errors.
|
||||
|
||||
To determine if a filter is applied, note the icon in the column
|
||||
heading. A drop-down arrow
|
||||
() means
|
||||
that filtering is enabled but not applied. In MS Excel, when you hover
|
||||
over the heading of a column with filtering enabled but not applied, a
|
||||
screen tip displays the cell text for the first row in that column, and
|
||||
the message "(Showing All)".
|
||||
|
||||

|
||||
|
||||
A Filter button
|
||||
() means
|
||||
that a filter is applied. When you hover over the heading of a filtered
|
||||
column, a screen tip displays the filter that has been applied to that
|
||||
column, such as "Equals a red cell color" or "Larger than 150".
|
||||
|
||||

|
||||
|
||||
## Setting an AutoFilter area on a worksheet
|
||||
|
||||
To set an autoFilter on a range of cells.
|
||||
|
||||
``` php
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter('A1:E20');
|
||||
```
|
||||
|
||||
The first row in an autofilter range will be the heading row, which
|
||||
displays the autoFilter dropdown icons. It is not part of the actual
|
||||
autoFiltered data. All subsequent rows are the autoFiltered data. So an
|
||||
AutoFilter range should always contain the heading row and one or more
|
||||
data rows (one data row is pretty meaningless, but PhpSpreadsheet won't
|
||||
actually stop you specifying a meaningless range: it's up to you as a
|
||||
developer to avoid such errors.
|
||||
|
||||
If you want to set the whole worksheet as an autofilter region
|
||||
|
||||
``` php
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter(
|
||||
$spreadsheet->getActiveSheet()
|
||||
->calculateWorksheetDimension()
|
||||
);
|
||||
```
|
||||
|
||||
This enables filtering, but does not actually apply any filters.
|
||||
|
||||
## Autofilter Expressions
|
||||
|
||||
PHPEXcel 1.7.8 introduced the ability to actually create, read and write
|
||||
filter expressions; initially only for Xlsx files, but later releases
|
||||
will extend this to other formats.
|
||||
|
||||
To apply a filter expression to an autoFilter range, you first need to
|
||||
identify which column you're going to be applying this filter to.
|
||||
|
||||
``` php
|
||||
$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
|
||||
$columnFilter = $autoFilter->getColumn('C');
|
||||
```
|
||||
|
||||
This returns an autoFilter column object, and you can then apply filter
|
||||
expressions to that column.
|
||||
|
||||
There are a number of different types of autofilter expressions. The
|
||||
most commonly used are:
|
||||
|
||||
- Simple Filters
|
||||
- DateGroup Filters
|
||||
- Custom filters
|
||||
- Dynamic Filters
|
||||
- Top Ten Filters
|
||||
|
||||
These different types are mutually exclusive within any single column.
|
||||
You should not mix the different types of filter in the same column.
|
||||
PhpSpreadsheet will not actively prevent you from doing this, but the
|
||||
results are unpredictable.
|
||||
|
||||
Other filter expression types (such as cell colour filters) are not yet
|
||||
supported.
|
||||
|
||||
### Simple filters
|
||||
|
||||
In MS Excel, Simple Filters are a dropdown list of all values used in
|
||||
that column, and the user can select which ones they want to display and
|
||||
which ones they want to hide by ticking and unticking the checkboxes
|
||||
alongside each option. When the filter is applied, rows containing the
|
||||
checked entries will be displayed, rows that don't contain those values
|
||||
will be hidden.
|
||||
|
||||

|
||||
|
||||
To create a filter expression, we need to start by identifying the
|
||||
filter type. In this case, we're just going to specify that this filter
|
||||
is a standard filter.
|
||||
|
||||
``` php
|
||||
$columnFilter->setFilterType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_FILTERTYPE_FILTER
|
||||
);
|
||||
```
|
||||
|
||||
Now we've identified the filter type, we can create a filter rule and
|
||||
set the filter values:
|
||||
|
||||
When creating a simple filter in PhpSpreadsheet, you only need to
|
||||
specify the values for "checked" columns: you do this by creating a
|
||||
filter rule for each value.
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'France'
|
||||
);
|
||||
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'Germany'
|
||||
);
|
||||
```
|
||||
|
||||
This creates two filter rules: the column will be filtered by values
|
||||
that match "France" OR "Germany". For Simple Filters, you can create as
|
||||
many rules as you want
|
||||
|
||||
Simple filters are always a comparison match of EQUALS, and multiple
|
||||
standard filters are always treated as being joined by an OR condition.
|
||||
|
||||
#### Matching Blanks
|
||||
|
||||
If you want to create a filter to select blank cells, you would use:
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
''
|
||||
);
|
||||
```
|
||||
|
||||
### DateGroup Filters
|
||||
|
||||
In MS Excel, DateGroup filters provide a series of dropdown filter
|
||||
selectors for date values, so you can specify entire years, or months
|
||||
within a year, or individual days within each month.
|
||||
|
||||

|
||||
|
||||
DateGroup filters are still applied as a Standard Filter type.
|
||||
|
||||
``` php
|
||||
$columnFilter->setFilterType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_FILTERTYPE_FILTER
|
||||
);
|
||||
```
|
||||
|
||||
Creating a dateGroup filter in PhpSpreadsheet, you specify the values
|
||||
for "checked" columns as an associative array of year. month, day, hour
|
||||
minute and second. To select a year and month, you need to create a
|
||||
DateGroup rule identifying the selected year and month:
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
array(
|
||||
'year' => 2012,
|
||||
'month' => 1
|
||||
)
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_DATEGROUP
|
||||
);
|
||||
```
|
||||
|
||||
The key values for the associative array are:
|
||||
|
||||
- year
|
||||
- month
|
||||
- day
|
||||
- hour
|
||||
- minute
|
||||
- second
|
||||
|
||||
Like Standard filters, DateGroup filters are always a match of EQUALS,
|
||||
and multiple standard filters are always treated as being joined by an
|
||||
OR condition.
|
||||
|
||||
Note that we alse specify a ruleType: to differentiate this from a
|
||||
standard filter, we explicitly set the Rule's Type to
|
||||
AUTOFILTER\_RULETYPE\_DATEGROUP. As with standard filters, we can create
|
||||
any number of DateGroup Filters.
|
||||
|
||||
### Custom filters
|
||||
|
||||
In MS Excel, Custom filters allow us to select more complex conditions
|
||||
using an operator as well as a value. Typical examples might be values
|
||||
that fall within a range (e.g. between -20 and +20), or text values with
|
||||
wildcards (e.g. beginning with the letter U). To handle this, they
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Custom filters are limited to 2 rules, and these can be joined using
|
||||
either an AND or an OR.
|
||||
|
||||
We start by specifying a Filter type, this time a CUSTOMFILTER.
|
||||
|
||||
``` php
|
||||
$columnFilter->setFilterType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER
|
||||
);
|
||||
```
|
||||
|
||||
And then define our rules.
|
||||
|
||||
The following shows a simple wildcard filter to show all column entries
|
||||
beginning with the letter `U`.
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'U*'
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER
|
||||
);
|
||||
```
|
||||
|
||||
MS Excel uses \* as a wildcard to match any number of characters, and ?
|
||||
as a wildcard to match a single character. 'U\*' equates to "begins with
|
||||
a 'U'"; '\*U' equates to "ends with a 'U'"; and '\*U\*' equates to
|
||||
"contains a 'U'"
|
||||
|
||||
If you want to match explicitly against a \* or a ? character, you can
|
||||
escape it with a tilde (\~), so ?\~\*\* would explicitly match for a \*
|
||||
character as the second character in the cell value, followed by any
|
||||
number of other characters. The only other character that needs escaping
|
||||
is the \~ itself.
|
||||
|
||||
To create a "between" condition, we need to define two rules:
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL,
|
||||
-20
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER
|
||||
);
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL,
|
||||
20
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER
|
||||
);
|
||||
```
|
||||
|
||||
We also set the rule type to CUSTOMFILTER.
|
||||
|
||||
This defined two rules, filtering numbers that are >= -20 OR <=
|
||||
20, so we also need to modify the join condition to reflect AND rather
|
||||
than OR.
|
||||
|
||||
``` php
|
||||
$columnFilter->setAndOr(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_COLUMN_ANDOR_AND
|
||||
);
|
||||
```
|
||||
|
||||
The valid set of operators for Custom Filters are defined in the
|
||||
`\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule` class, and
|
||||
comprise:
|
||||
|
||||
Operator Constant | Value
|
||||
------------------------------------------|----------------------
|
||||
AUTOFILTER_COLUMN_RULE_EQUAL | 'equal'
|
||||
AUTOFILTER_COLUMN_RULE_NOTEQUAL | 'notEqual'
|
||||
AUTOFILTER_COLUMN_RULE_GREATERTHAN | 'greaterThan'
|
||||
AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL | 'greaterThanOrEqual'
|
||||
AUTOFILTER_COLUMN_RULE_LESSTHAN | 'lessThan'
|
||||
AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL | 'lessThanOrEqual'
|
||||
|
||||
### Dynamic Filters
|
||||
|
||||
Dynamic Filters are based on a dynamic comparison condition, where the
|
||||
value we're comparing against the cell values is variable, such as
|
||||
'today'; or when we're testing against an aggregate of the cell data
|
||||
(e.g. 'aboveAverage'). Only a single dynamic filter can be applied to a
|
||||
column at a time.
|
||||
|
||||

|
||||
|
||||
Again, we start by specifying a Filter type, this time a DYNAMICFILTER.
|
||||
|
||||
``` php
|
||||
$columnFilter->setFilterType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER
|
||||
);
|
||||
```
|
||||
|
||||
When defining the rule for a dynamic filter, we don't define a value (we
|
||||
can simply set that to NULL) but we do specify the dynamic filter
|
||||
category.
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
NULL,
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER
|
||||
);
|
||||
```
|
||||
|
||||
We also set the rule type to DYNAMICFILTER.
|
||||
|
||||
The valid set of dynamic filter categories is defined in the
|
||||
`\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule` class, and
|
||||
comprises:
|
||||
|
||||
Operator Constant | Value
|
||||
-----------------------------------------|----------------
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY | 'yesterday'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_TODAY | 'today'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW | 'tomorrow'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE | 'yearToDate'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR | 'thisYear'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER | 'thisQuarter'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH | 'thisMonth'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK | 'thisWeek'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR | 'lastYear'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER | 'lastQuarter'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH | 'lastMonth'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK | 'lastWeek'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR | 'nextYear'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER | 'nextQuarter'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH | 'nextMonth'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK | 'nextWeek'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 | 'M1'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_JANUARY | 'M1'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 | 'M2'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY | 'M2'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 | 'M3'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MARCH | 'M3'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 | 'M4'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_APRIL | 'M4'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 | 'M5'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MAY | 'M5'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 | 'M6'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_JUNE | 'M6'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 | 'M7'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_JULY | 'M7'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 | 'M8'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_AUGUST | 'M8'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 | 'M9'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER | 'M9'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 | 'M10'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER | 'M10'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 | 'M11'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER | 'M11'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 | 'M12'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER | 'M12'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 | 'Q1'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 | 'Q2'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 | 'Q3'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 | 'Q4'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE | 'aboveAverage'
|
||||
AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE | 'belowAverage'
|
||||
|
||||
We can only apply a single Dynamic Filter rule to a column at a time.
|
||||
|
||||
### Top Ten Filters
|
||||
|
||||
Top Ten Filters are similar to Dynamic Filters in that they are based on
|
||||
a summarisation of the actual data values in the cells. However, unlike
|
||||
Dynamic Filters where you can only select a single option, Top Ten
|
||||
Filters allow you to select based on a number of criteria:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
You can identify whether you want the top (highest) or bottom (lowest)
|
||||
values.You can identify how many values you wish to select in the
|
||||
filterYou can identify whether this should be a percentage or a number
|
||||
of items.
|
||||
|
||||
Like Dynamic Filters, only a single Top Ten filter can be applied to a
|
||||
column at a time.
|
||||
|
||||
We start by specifying a Filter type, this time a DYNAMICFILTER.
|
||||
|
||||
``` php
|
||||
$columnFilter->setFilterType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER
|
||||
);
|
||||
```
|
||||
|
||||
Then we create the rule:
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT,
|
||||
5,
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_TOPTENFILTER
|
||||
);
|
||||
```
|
||||
|
||||
This will filter the Top 5 percent of values in the column.
|
||||
|
||||
To specify the lowest (bottom 2 values), we would specify a rule of:
|
||||
|
||||
``` php
|
||||
$columnFilter->createRule()
|
||||
->setRule(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE,
|
||||
5,
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM
|
||||
)
|
||||
->setRuleType(
|
||||
\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_TOPTENFILTER
|
||||
);
|
||||
```
|
||||
|
||||
The option values for TopTen Filters top/bottom value/percent are all
|
||||
defined in the
|
||||
`\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule` class, and
|
||||
comprise:
|
||||
|
||||
Operator Constant | Value
|
||||
---------------------------------------|-------------
|
||||
AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE | 'byValue'
|
||||
AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT | 'byPercent'
|
||||
|
||||
and
|
||||
|
||||
Operator Constant | Value
|
||||
-------------------------------------|----------
|
||||
AUTOFILTER_COLUMN_RULE_TOPTEN_TOP | 'top'
|
||||
AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM | 'bottom'
|
||||
|
||||
## Executing an AutoFilter
|
||||
|
||||
When an autofilter is applied in MS Excel, it sets the row
|
||||
hidden/visible flags for each row of the autofilter area based on the
|
||||
selected criteria, so that only those rows that match the filter
|
||||
criteria are displayed.
|
||||
|
||||
PhpSpreadsheet will not execute the equivalent function automatically
|
||||
when you set or change a filter expression, but only when the file is
|
||||
saved.
|
||||
|
||||
### Applying the Filter
|
||||
|
||||
If you wish to execute your filter from within a script, you need to do
|
||||
this manually. You can do this using the autofilters `showHideRows()`
|
||||
method.
|
||||
|
||||
``` php
|
||||
$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
|
||||
$autoFilter->showHideRows();
|
||||
```
|
||||
|
||||
This will set all rows that match the filter criteria to visible, while
|
||||
hiding all other rows within the autofilter area.
|
||||
|
||||
### Displaying Filtered Rows
|
||||
|
||||
Simply looping through the rows in an autofilter area will still access
|
||||
ever row, whether it matches the filter criteria or not. To selectively
|
||||
access only the filtered rows, you need to test each row’s visibility
|
||||
settings.
|
||||
|
||||
``` php
|
||||
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {
|
||||
if ($spreadsheet->getActiveSheet()
|
||||
->getRowDimension($row->getRowIndex())->getVisible()) {
|
||||
echo ' Row number - ' , $row->getRowIndex() , ' ';
|
||||
echo $spreadsheet->getActiveSheet()
|
||||
->getCell(
|
||||
'C'.$row->getRowIndex()
|
||||
)
|
||||
->getValue(), ' ';
|
||||
echo $spreadsheet->getActiveSheet()
|
||||
->getCell(
|
||||
'D'.$row->getRowIndex()
|
||||
)->getFormattedValue(), ' ';
|
||||
echo PHP_EOL;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## AutoFilter Sorting
|
||||
|
||||
In MS Excel, Autofiltering also allows the rows to be sorted. This
|
||||
feature is ***not*** supported by PhpSpreadsheet.
|
2052
inc/vendor/phpoffice/phpspreadsheet/docs/topics/calculation-engine.md
vendored
Normal file
59
inc/vendor/phpoffice/phpspreadsheet/docs/topics/creating-spreadsheet.md
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
# Creating a spreadsheet
|
||||
|
||||
## The `Spreadsheet` class
|
||||
|
||||
The `Spreadsheet` class is the core of PhpSpreadsheet. It contains
|
||||
references to the contained worksheets, document security settings and
|
||||
document meta data.
|
||||
|
||||
To simplify the PhpSpreadsheet concept: the `Spreadsheet` class
|
||||
represents your workbook.
|
||||
|
||||
Typically, you will create a workbook in one of two ways, either by
|
||||
loading it from a spreadsheet file, or creating it manually. A third
|
||||
option, though less commonly used, is cloning an existing workbook that
|
||||
has been created using one of the previous two methods.
|
||||
|
||||
### Loading a Workbook from a file
|
||||
|
||||
Details of the different spreadsheet formats supported, and the options
|
||||
available to read them into a Spreadsheet object are described fully in
|
||||
the [Reading Files](./reading-files.md) document.
|
||||
|
||||
``` php
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Load $inputFileName to a Spreadsheet object **/
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
|
||||
```
|
||||
|
||||
### Creating a new workbook
|
||||
|
||||
If you want to create a new workbook, rather than load one from file,
|
||||
then you simply need to instantiate it as a new Spreadsheet object.
|
||||
|
||||
``` php
|
||||
/** Create a new Spreadsheet Object **/
|
||||
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
```
|
||||
|
||||
A new workbook will always be created with a single worksheet.
|
||||
|
||||
## Clearing a Workbook from memory
|
||||
|
||||
The PhpSpreadsheet object contains cyclic references (e.g. the workbook
|
||||
is linked to the worksheets, and the worksheets are linked to their
|
||||
parent workbook) which cause problems when PHP tries to clear the
|
||||
objects from memory when they are `unset()`, or at the end of a function
|
||||
when they are in local scope. The result of this is "memory leaks",
|
||||
which can easily use a large amount of PHP's limited memory.
|
||||
|
||||
This can only be resolved manually: if you need to unset a workbook,
|
||||
then you also need to "break" these cyclic references before doing so.
|
||||
PhpSpreadsheet provides the `disconnectWorksheets()` method for this
|
||||
purpose.
|
||||
|
||||
``` php
|
||||
$spreadsheet->disconnectWorksheets();
|
||||
unset($spreadsheet);
|
||||
```
|
121
inc/vendor/phpoffice/phpspreadsheet/docs/topics/file-formats.md
vendored
Normal file
@ -0,0 +1,121 @@
|
||||
# File Formats
|
||||
|
||||
PhpSpreadsheet can read a number of different spreadsheet and file
|
||||
formats, although not all features are supported by all of the readers.
|
||||
Check the [features cross
|
||||
reference](../references/features-cross-reference.md) for a list that
|
||||
identifies which features are supported by which readers.
|
||||
|
||||
Currently, PhpSpreadsheet supports the following File Types for Reading:
|
||||
|
||||
### Xls
|
||||
|
||||
The Microsoft Excel™ Binary file format (BIFF5 and BIFF8) is a binary
|
||||
file format that was used by Microsoft Excel™ between versions 95 and 2003.
|
||||
The format is supported (to various extents) by most spreadsheet
|
||||
programs. BIFF files normally have an extension of .xls. Documentation
|
||||
describing the format can be [read online](https://msdn.microsoft.com/en-us/library/cc313154(v=office.12).aspx)
|
||||
or [downloaded as PDF](http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/%5BMS-XLS%5D.pdf).
|
||||
|
||||
### Xml
|
||||
|
||||
Microsoft Excel™ 2003 included options for a file format called
|
||||
SpreadsheetML. This file is a zipped XML document. It is not very
|
||||
common, but its core features are supported. Documentation for the
|
||||
format can be [read online](https://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx)
|
||||
though it’s sadly rather sparse in its detail.
|
||||
|
||||
### Xlsx
|
||||
|
||||
Microsoft Excel™ 2007 shipped with a new file format, namely Microsoft
|
||||
Office Open XML SpreadsheetML, and Excel 2010 extended this still
|
||||
further with its new features such as sparklines. These files typically
|
||||
have an extension of .xlsx. This format is based around a zipped
|
||||
collection of eXtensible Markup Language (XML) files. Microsoft Office
|
||||
Open XML SpreadsheetML is mostly standardized in [ECMA 376](http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm)
|
||||
and ISO 29500.
|
||||
|
||||
### Ods
|
||||
|
||||
aka Open Document Format (ODF) or OASIS, this is the OpenOffice.org XML
|
||||
file format for spreadsheets. It comprises a zip archive including
|
||||
several components all of which are text files, most of these with
|
||||
markup in the eXtensible Markup Language (XML). It is the standard file
|
||||
format for OpenOffice.org Calc and StarCalc, and files typically have an
|
||||
extension of .ods. The published specification for the file format is
|
||||
available from [the OASIS Open Office XML Format Technical Committee web
|
||||
page](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office).
|
||||
Other information is available from [the OpenOffice.org XML File Format
|
||||
web page](http://www.openoffice.org/xml/), part of the
|
||||
OpenOffice.org project.
|
||||
|
||||
### Slk
|
||||
|
||||
This is the Microsoft Multiplan Symbolic Link Interchange (SYLK) file
|
||||
format. Multiplan was a predecessor to Microsoft Excel™. Files normally
|
||||
have an extension of .slk. While not common, there are still a few
|
||||
applications that generate SYLK files as a cross-platform option,
|
||||
because (despite being limited to a single worksheet) it is a simple
|
||||
format to implement, and supports some basic data and cell formatting
|
||||
options (unlike CSV files).
|
||||
|
||||
### Gnumeric
|
||||
|
||||
The [Gnumeric file format](https://help.gnome.org/users/gnumeric/stable/sect-file-formats.html.en#file-format-gnumeric)
|
||||
is used by the Gnome Gnumeric spreadsheet
|
||||
application, and typically files have an extension of `.gnumeric`. The
|
||||
file contents are stored using eXtensible Markup Language (XML) markup,
|
||||
and the file is then compressed using the GNU project's gzip compression
|
||||
library.
|
||||
|
||||
### Csv
|
||||
|
||||
Comma Separated Value (CSV) file format is a common structuring strategy
|
||||
for text format files. In CSV flies, each line in the file represents a
|
||||
row of data and (within each line of the file) the different data fields
|
||||
(or columns) are separated from one another using a comma (`,`). If a
|
||||
data field contains a comma, then it should be enclosed (typically in
|
||||
quotation marks (`"`). Sometimes tabs `\t`, or the pipe symbol (`|`), or a
|
||||
semi-colon (`;`) are used as separators instead of a comma, although
|
||||
other symbols can be used. Because CSV is a text-only format, it doesn't
|
||||
support any data formatting options.
|
||||
|
||||
"CSV" is not a single, well-defined format (although see RFC 4180 for
|
||||
one definition that is commonly used). Rather, in practice the term
|
||||
"CSV" refers to any file that:
|
||||
|
||||
- is plain text using a character set such as ASCII, Unicode, EBCDIC,
|
||||
or Shift JIS,
|
||||
- consists of records (typically one record per line),
|
||||
- with the records divided into fields separated by delimiters
|
||||
(typically a single reserved character such as comma, semicolon, or
|
||||
tab,
|
||||
- where every record has the same sequence of fields.
|
||||
|
||||
Within these general constraints, many variations are in use. Therefore
|
||||
"CSV" files are not entirely portable. Nevertheless, the variations are
|
||||
fairly small, and many implementations allow users to glance at the file
|
||||
(which is feasible because it is plain text), and then specify the
|
||||
delimiter character(s), quoting rules, etc.
|
||||
|
||||
**Warning:** Microsoft Excel™ will open .csv files, but depending on the
|
||||
system's regional settings, it may expect a semicolon as a separator
|
||||
instead of a comma, since in some languages the comma is used as the
|
||||
decimal separator. Also, many regional versions of Excel will not be
|
||||
able to deal with Unicode characters in a CSV file.
|
||||
|
||||
### Html
|
||||
|
||||
HyperText Markup Language (HTML) is the main markup language for
|
||||
creating web pages and other information that can be displayed in a web
|
||||
browser. Files typically have an extension of .html or .htm. HTML markup
|
||||
provides a means to create structured documents by denoting structural
|
||||
semantics for text such as headings, paragraphs, lists, links, quotes
|
||||
and other items. Since 1996, the HTML specifications have been
|
||||
maintained, with input from commercial software vendors, by the World
|
||||
Wide Web Consortium (W3C). However, in 2000, HTML also became an
|
||||
international standard (ISO/IEC 15445:2000). HTML 4.01 was published in
|
||||
late 1999, with further errata published through 2001. In 2004
|
||||
development began on HTML5 in the Web Hypertext Application Technology
|
||||
Working Group (WHATWG), which became a joint deliverable with the W3C in
|
||||
2008.
|
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-01-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-02-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-03-filter-icon-1.png
vendored
Normal file
After Width: | Height: | Size: 453 B |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-03-filter-icon-2.png
vendored
Normal file
After Width: | Height: | Size: 640 B |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-04-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/01-schematic.png
vendored
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/02-readers-writers.png
vendored
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-01-simple-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-02-dategroup-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-03-custom-autofilter-1.png
vendored
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-03-custom-autofilter-2.png
vendored
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-04-dynamic-autofilter.png
vendored
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-05-topten-autofilter-1.png
vendored
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/04-05-topten-autofilter-2.png
vendored
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/07-simple-example-1.png
vendored
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/07-simple-example-2.png
vendored
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/07-simple-example-3.png
vendored
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/07-simple-example-4.png
vendored
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/08-cell-comment.png
vendored
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/08-column-width.png
vendored
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/08-page-setup-margins.png
vendored
Normal file
After Width: | Height: | Size: 122 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/08-page-setup-scaling-options.png
vendored
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/08-styling-border-options.png
vendored
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/09-command-line-calculation.png
vendored
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/09-formula-in-cell-1.png
vendored
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
inc/vendor/phpoffice/phpspreadsheet/docs/topics/images/09-formula-in-cell-2.png
vendored
Normal file
After Width: | Height: | Size: 33 KiB |
107
inc/vendor/phpoffice/phpspreadsheet/docs/topics/memory_saving.md
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
# Memory saving
|
||||
|
||||
PhpSpreadsheet uses an average of about 1k per cell in your worksheets, so
|
||||
large workbooks can quickly use up available memory. Cell caching
|
||||
provides a mechanism that allows PhpSpreadsheet to maintain the cell
|
||||
objects in a smaller size of memory, or off-memory (eg: on disk, in APCu,
|
||||
memcache or redis). This allows you to reduce the memory usage for large
|
||||
workbooks, although at a cost of speed to access cell data.
|
||||
|
||||
By default, PhpSpreadsheet holds all cell objects in memory, but
|
||||
you can specify alternatives by providing your own
|
||||
[PSR-16](http://www.php-fig.org/psr/psr-16/) implementation. PhpSpreadsheet keys
|
||||
are automatically namespaced, and cleaned up after use, so a single cache
|
||||
instance may be shared across several usage of PhpSpreadsheet or even with other
|
||||
cache usages.
|
||||
|
||||
To enable cell caching, you must provide your own implementation of cache like so:
|
||||
|
||||
``` php
|
||||
$cache = new MyCustomPsr16Implementation();
|
||||
|
||||
\PhpOffice\PhpSpreadsheet\Settings::setCache($cache);
|
||||
```
|
||||
|
||||
A separate cache is maintained for each individual worksheet, and is
|
||||
automatically created when the worksheet is instantiated based on the
|
||||
settings that you have configured. You cannot change
|
||||
the configuration settings once you have started to read a workbook, or
|
||||
have created your first worksheet.
|
||||
|
||||
## Beware of TTL
|
||||
|
||||
As opposed to common cache concept, PhpSpreadsheet data cannot be re-generated
|
||||
from scratch. If some data is stored and later is not retrievable,
|
||||
PhpSpreadsheet will throw an exception.
|
||||
|
||||
That means that the data stored in cache **must not be deleted** by a
|
||||
third-party or via TTL mechanism.
|
||||
|
||||
So be sure that TTL is either de-activated or long enough to cover the entire
|
||||
usage of PhpSpreadsheet.
|
||||
|
||||
## Common use cases
|
||||
|
||||
PhpSpreadsheet does not ship with alternative cache implementation. It is up to
|
||||
you to select the most appropriate implementation for your environnement. You
|
||||
can either implement [PSR-16](http://www.php-fig.org/psr/psr-16/) from scratch,
|
||||
or use [pre-existing libraries](https://packagist.org/search/?q=psr-16).
|
||||
|
||||
One such library is [PHP Cache](https://www.php-cache.com/) which
|
||||
provides a wide range of alternatives. Refers to their documentation for
|
||||
details, but here are a few suggestions that should get you started.
|
||||
|
||||
### APCu
|
||||
|
||||
Require the packages into your project:
|
||||
|
||||
```sh
|
||||
composer require cache/simple-cache-bridge cache/apcu-adapter
|
||||
```
|
||||
|
||||
Configure PhpSpreadsheet with something like:
|
||||
|
||||
```php
|
||||
$pool = new \Cache\Adapter\Apcu\ApcuCachePool();
|
||||
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
|
||||
|
||||
\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);
|
||||
```
|
||||
|
||||
### Redis
|
||||
|
||||
Require the packages into your project:
|
||||
|
||||
```sh
|
||||
composer require cache/simple-cache-bridge cache/redis-adapter
|
||||
```
|
||||
|
||||
Configure PhpSpreadsheet with something like:
|
||||
|
||||
```php
|
||||
$client = new \Redis();
|
||||
$client->connect('127.0.0.1', 6379);
|
||||
$pool = new \Cache\Adapter\Redis\RedisCachePool($client);
|
||||
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
|
||||
|
||||
\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);
|
||||
```
|
||||
|
||||
### Memcache
|
||||
|
||||
Require the packages into your project:
|
||||
|
||||
```sh
|
||||
composer require cache/simple-cache-bridge cache/memcache-adapter
|
||||
```
|
||||
|
||||
Configure PhpSpreadsheet with something like:
|
||||
|
||||
```php
|
||||
$client = new \Memcache();
|
||||
$client->connect('localhost', 11211);
|
||||
$pool = new \Cache\Adapter\Memcache\MemcacheCachePool($client);
|
||||
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);
|
||||
|
||||
\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);
|
||||
```
|
427
inc/vendor/phpoffice/phpspreadsheet/docs/topics/migration-from-PHPExcel.md
vendored
Normal file
@ -0,0 +1,427 @@
|
||||
# Migration from PHPExcel
|
||||
|
||||
PhpSpreadsheet introduced many breaking changes by introducing
|
||||
namespaces and renaming some classes. To help you migrate existing
|
||||
project, a tool was written to replace all references to PHPExcel
|
||||
classes to their new names. But they are also manual changes that
|
||||
need to be done.
|
||||
|
||||
## Automated tool
|
||||
|
||||
The tool is included in PhpSpreadsheet. It scans recursively all files
|
||||
and directories, starting from the current directory. Assuming it was
|
||||
installed with composer, it can be run like so:
|
||||
|
||||
``` sh
|
||||
cd /project/to/migrate/src
|
||||
/project/to/migrate/vendor/phpoffice/phpspreadsheet/bin/migrate-from-phpexcel
|
||||
```
|
||||
|
||||
**Important** The tool will irreversibly modify your sources, be sure to
|
||||
backup everything, and double check the result before committing.
|
||||
|
||||
## Manual changes
|
||||
|
||||
In addition to automated changes, a few things need to be migrated manually.
|
||||
|
||||
### Renamed readers and writers
|
||||
|
||||
When using `IOFactory::createReader()`, `IOFactory::createWriter()` and
|
||||
`IOFactory::identify()`, the reader/writer short names are used. Those were
|
||||
changed, along as their corresponding class, to remove ambiguity:
|
||||
|
||||
Before | After
|
||||
-----------------|---------
|
||||
`'CSV'` | `'Csv'`
|
||||
`'Excel2003XML'` | `'Xml'`
|
||||
`'Excel2007'` | `'Xlsx'`
|
||||
`'Excel5'` | `'Xls'`
|
||||
`'Gnumeric'` | `'Gnumeric'`
|
||||
`'HTML'` | `'Html'`
|
||||
`'OOCalc'` | `'Ods'`
|
||||
`'OpenDocument'` | `'Ods'`
|
||||
`'PDF'` | `'Pdf'`
|
||||
`'SYLK'` | `'Slk'`
|
||||
|
||||
### Simplified IOFactory
|
||||
|
||||
The following methods :
|
||||
|
||||
- `PHPExcel_IOFactory::getSearchLocations()`
|
||||
- `PHPExcel_IOFactory::setSearchLocations()`
|
||||
- `PHPExcel_IOFactory::addSearchLocation()`
|
||||
|
||||
were replaced by `IOFactory::registerReader()` and `IOFactory::registerWriter()`. That means
|
||||
IOFactory now relies on classes autoloading.
|
||||
|
||||
Before:
|
||||
|
||||
```php
|
||||
\PHPExcel_IOFactory::addSearchLocation($type, $location, $classname);
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```php
|
||||
\PhpOffice\PhpSpreadsheet\IOFactory::registerReader($type, $classname);
|
||||
```
|
||||
|
||||
### Removed deprecated things
|
||||
|
||||
#### Worksheet::duplicateStyleArray()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$worksheet->duplicateStyleArray($styles, $range, $advanced);
|
||||
|
||||
// After
|
||||
$worksheet->getStyle($range)->applyFromArray($styles, $advanced);
|
||||
```
|
||||
|
||||
#### DataType::dataTypeForValue()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
DataType::dataTypeForValue($value);
|
||||
|
||||
// After
|
||||
DefaultValueBinder::dataTypeForValue($value);
|
||||
```
|
||||
|
||||
#### Conditional::getCondition()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$conditional->getCondition();
|
||||
|
||||
// After
|
||||
$conditional->getConditions()[0];
|
||||
```
|
||||
|
||||
#### Conditional::setCondition()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$conditional->setCondition($value);
|
||||
|
||||
// After
|
||||
$conditional->setConditions($value);
|
||||
```
|
||||
|
||||
#### Worksheet::getDefaultStyle()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$worksheet->getDefaultStyle();
|
||||
|
||||
// After
|
||||
$worksheet->getParent()->getDefaultStyle();
|
||||
```
|
||||
|
||||
#### Worksheet::setDefaultStyle()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$worksheet->setDefaultStyle($value);
|
||||
|
||||
// After
|
||||
$worksheet->getParent()->getDefaultStyle()->applyFromArray([
|
||||
'font' => [
|
||||
'name' => $pValue->getFont()->getName(),
|
||||
'size' => $pValue->getFont()->getSize(),
|
||||
],
|
||||
]);
|
||||
|
||||
```
|
||||
|
||||
#### Worksheet::setSharedStyle()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$worksheet->setSharedStyle($sharedStyle, $range);
|
||||
|
||||
// After
|
||||
$worksheet->duplicateStyle($sharedStyle, $range);
|
||||
```
|
||||
|
||||
#### Worksheet::getSelectedCell()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$worksheet->getSelectedCell();
|
||||
|
||||
// After
|
||||
$worksheet->getSelectedCells();
|
||||
```
|
||||
|
||||
#### Writer\Xls::setTempDir()
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$writer->setTempDir();
|
||||
|
||||
// After, there is no way to set temporary storage directory anymore
|
||||
```
|
||||
|
||||
### Autoloader
|
||||
|
||||
The class `PHPExcel_Autoloader` was removed entirely and is replaced by composer
|
||||
autoloading mechanism.
|
||||
|
||||
### Writing PDF
|
||||
|
||||
PDF libraries must be installed via composer. And the following methods were removed
|
||||
and are replaced by `IOFactory::registerWriter()` instead:
|
||||
|
||||
- `PHPExcel_Settings::getPdfRenderer()`
|
||||
- `PHPExcel_Settings::setPdfRenderer()`
|
||||
- `PHPExcel_Settings::getPdfRendererName()`
|
||||
- `PHPExcel_Settings::setPdfRendererName()`
|
||||
|
||||
Before:
|
||||
|
||||
```php
|
||||
\PHPExcel_Settings::setPdfRendererName(PHPExcel_Settings::PDF_RENDERER_MPDF);
|
||||
\PHPExcel_Settings::setPdfRenderer($somePath);
|
||||
$writer = \PHPExcel_IOFactory::createWriter($spreadsheet, 'PDF');
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```php
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Mpdf');
|
||||
|
||||
// Or alternatively
|
||||
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf::class);
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Pdf');
|
||||
|
||||
// Or alternatively
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
|
||||
```
|
||||
|
||||
### Rendering charts
|
||||
|
||||
When rendering charts for HTML or PDF outputs, the process was also simplified. And while
|
||||
JpGraph support is still available, it is unfortunately not up to date for latest PHP versions
|
||||
and it will generate various warnings.
|
||||
|
||||
If you rely on this feature, please consider
|
||||
contributing either patches to JpGraph or another `IRenderer` implementation (a good
|
||||
candidate might be [CpChart](https://github.com/szymach/c-pchart)).
|
||||
|
||||
Before:
|
||||
|
||||
```php
|
||||
$rendererName = \PHPExcel_Settings::CHART_RENDERER_JPGRAPH;
|
||||
$rendererLibrary = 'jpgraph3.5.0b1/src/';
|
||||
$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary;
|
||||
|
||||
\PHPExcel_Settings::setChartRenderer($rendererName, $rendererLibraryPath);
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
Require the dependency via composer:
|
||||
|
||||
```sh
|
||||
composer require jpgraph/jpgraph
|
||||
```
|
||||
|
||||
And then:
|
||||
|
||||
```php
|
||||
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);
|
||||
```
|
||||
|
||||
### PclZip and ZipArchive
|
||||
|
||||
Support for PclZip were dropped in favor of the more complete and modern
|
||||
[PHP extension ZipArchive](http://php.net/manual/en/book.zip.php).
|
||||
So the following were removed:
|
||||
|
||||
- `PclZip`
|
||||
- `PHPExcel_Settings::setZipClass()`
|
||||
- `PHPExcel_Settings::getZipClass()`
|
||||
- `PHPExcel_Shared_ZipArchive`
|
||||
- `PHPExcel_Shared_ZipStreamWrapper`
|
||||
|
||||
### Cell caching
|
||||
|
||||
Cell caching was heavily refactored to leverage
|
||||
[PSR-16](http://www.php-fig.org/psr/psr-16/). That means most classes
|
||||
related to that feature were removed:
|
||||
|
||||
- `PHPExcel_CachedObjectStorage_APC`
|
||||
- `PHPExcel_CachedObjectStorage_DiscISAM`
|
||||
- `PHPExcel_CachedObjectStorage_ICache`
|
||||
- `PHPExcel_CachedObjectStorage_Igbinary`
|
||||
- `PHPExcel_CachedObjectStorage_Memcache`
|
||||
- `PHPExcel_CachedObjectStorage_Memory`
|
||||
- `PHPExcel_CachedObjectStorage_MemoryGZip`
|
||||
- `PHPExcel_CachedObjectStorage_MemorySerialized`
|
||||
- `PHPExcel_CachedObjectStorage_PHPTemp`
|
||||
- `PHPExcel_CachedObjectStorage_SQLite`
|
||||
- `PHPExcel_CachedObjectStorage_SQLite3`
|
||||
- `PHPExcel_CachedObjectStorage_Wincache`
|
||||
|
||||
In addition to that, `\PhpOffice\PhpSpreadsheet::getCellCollection()` was renamed
|
||||
to `\PhpOffice\PhpSpreadsheet::getCoordinates()` and
|
||||
`\PhpOffice\PhpSpreadsheet::getCellCacheController()` to
|
||||
`\PhpOffice\PhpSpreadsheet::getCellCollection()` for clarity.
|
||||
|
||||
Refer to [the new documentation](./memory_saving.md) to see how to migrate.
|
||||
|
||||
### Dropped conditionally returned cell
|
||||
|
||||
For all the following methods, it is no more possible to change the type of
|
||||
returned value. It always return the Worksheet and never the Cell or Rule:
|
||||
|
||||
- Worksheet::setCellValue()
|
||||
- Worksheet::setCellValueByColumnAndRow()
|
||||
- Worksheet::setCellValueExplicit()
|
||||
- Worksheet::setCellValueExplicitByColumnAndRow()
|
||||
- Worksheet::addRule()
|
||||
|
||||
Migration would be similar to:
|
||||
|
||||
``` php
|
||||
// Before
|
||||
$cell = $worksheet->setCellValue('A1', 'value', true);
|
||||
|
||||
// After
|
||||
$cell = $worksheet->getCell('A1')->setValue('value');
|
||||
```
|
||||
|
||||
### Standardized keys for styling
|
||||
|
||||
Array keys used for styling have been standardized for a more coherent experience.
|
||||
It now uses the same wording and casing as the getter and setter:
|
||||
|
||||
```php
|
||||
// Before
|
||||
$style = [
|
||||
'numberformat' => [
|
||||
'code' => NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE,
|
||||
],
|
||||
'font' => [
|
||||
'strike' => true,
|
||||
'superScript' => true,
|
||||
'subScript' => true,
|
||||
],
|
||||
'alignment' => [
|
||||
'rotation' => 90,
|
||||
'readorder' => Alignment::READORDER_RTL,
|
||||
'wrap' => true,
|
||||
],
|
||||
'borders' => [
|
||||
'diagonaldirection' => Borders::DIAGONAL_BOTH,
|
||||
'allborders' => [
|
||||
'style' => Border::BORDER_THIN,
|
||||
],
|
||||
],
|
||||
'fill' => [
|
||||
'type' => Fill::FILL_GRADIENT_LINEAR,
|
||||
'startcolor' => [
|
||||
'argb' => 'FFA0A0A0',
|
||||
],
|
||||
'endcolor' => [
|
||||
'argb' => 'FFFFFFFF',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// After
|
||||
$style = [
|
||||
'numberFormat' => [
|
||||
'formatCode' => NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE,
|
||||
],
|
||||
'font' => [
|
||||
'strikethrough' => true,
|
||||
'superscript' => true,
|
||||
'subscript' => true,
|
||||
],
|
||||
'alignment' => [
|
||||
'textRotation' => 90,
|
||||
'readOrder' => Alignment::READORDER_RTL,
|
||||
'wrapText' => true,
|
||||
],
|
||||
'borders' => [
|
||||
'diagonalDirection' => Borders::DIAGONAL_BOTH,
|
||||
'allBorders' => [
|
||||
'borderStyle' => Border::BORDER_THIN,
|
||||
],
|
||||
],
|
||||
'fill' => [
|
||||
'fillType' => Fill::FILL_GRADIENT_LINEAR,
|
||||
'startColor' => [
|
||||
'argb' => 'FFA0A0A0',
|
||||
],
|
||||
'endColor' => [
|
||||
'argb' => 'FFFFFFFF',
|
||||
],
|
||||
],
|
||||
];
|
||||
```
|
||||
|
||||
### Dedicated class to manipulate coordinates
|
||||
|
||||
Methods to manipulate coordinates that used to exists in `PHPExcel_Cell` were extracted
|
||||
to a dedicated new class `\PhpOffice\PhpSpreadsheet\Cell\Coordinate`. The methods are:
|
||||
|
||||
- `absoluteCoordinate()`
|
||||
- `absoluteReference()`
|
||||
- `buildRange()`
|
||||
- `columnIndexFromString()`
|
||||
- `coordinateFromString()`
|
||||
- `extractAllCellReferencesInRange()`
|
||||
- `getRangeBoundaries()`
|
||||
- `mergeRangesInCollection()`
|
||||
- `rangeBoundaries()`
|
||||
- `rangeDimension()`
|
||||
- `splitRange()`
|
||||
- `stringFromColumnIndex()`
|
||||
|
||||
### Column index based on 1
|
||||
|
||||
Column indexes are now based on 1. So column `A` is the index `1`. This is consistent
|
||||
with rows starting at 1 and Excel function `COLUMN()` that returns `1` for column `A`.
|
||||
So the code must be adapted with something like:
|
||||
|
||||
```php
|
||||
// Before
|
||||
$cell = $worksheet->getCellByColumnAndRow($column, $row);
|
||||
|
||||
for ($column = 0; $column < $max; $column++) {
|
||||
$worksheet->setCellValueByColumnAndRow($column, $row, 'value ' . $column);
|
||||
}
|
||||
|
||||
// After
|
||||
$cell = $worksheet->getCellByColumnAndRow($column + 1, $row);
|
||||
|
||||
for ($column = 1; $column <= $max; $column++) {
|
||||
$worksheet->setCellValueByColumnAndRow($column, $row, 'value ' . $column);
|
||||
}
|
||||
```
|
||||
|
||||
All the following methods are affected:
|
||||
|
||||
- `PHPExcel_Worksheet::cellExistsByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::freezePaneByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::getCellByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::getColumnDimensionByColumn()`
|
||||
- `PHPExcel_Worksheet::getCommentByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::getStyleByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::insertNewColumnBeforeByIndex()`
|
||||
- `PHPExcel_Worksheet::mergeCellsByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::protectCellsByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::removeColumnByIndex()`
|
||||
- `PHPExcel_Worksheet::setAutoFilterByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::setBreakByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::setCellValueByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::setCellValueExplicitByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::setSelectedCellByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::stringFromColumnIndex()`
|
||||
- `PHPExcel_Worksheet::unmergeCellsByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet::unprotectCellsByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet_PageSetup::addPrintAreaByColumnAndRow()`
|
||||
- `PHPExcel_Worksheet_PageSetup::setPrintAreaByColumnAndRow()`
|
877
inc/vendor/phpoffice/phpspreadsheet/docs/topics/reading-and-writing-to-file.md
vendored
Normal file
@ -0,0 +1,877 @@
|
||||
# Reading and writing to file
|
||||
|
||||
As you already know from the [architecture](./architecture.md#readers-and-writers),
|
||||
reading and writing to a
|
||||
persisted storage is not possible using the base PhpSpreadsheet classes.
|
||||
For this purpose, PhpSpreadsheet provides readers and writers, which are
|
||||
implementations of `\PhpOffice\PhpSpreadsheet\Reader\IReader` and
|
||||
`\PhpOffice\PhpSpreadsheet\Writer\IWriter`.
|
||||
|
||||
## \PhpOffice\PhpSpreadsheet\IOFactory
|
||||
|
||||
The PhpSpreadsheet API offers multiple methods to create a
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReader` or
|
||||
`\PhpOffice\PhpSpreadsheet\Writer\IWriter` instance:
|
||||
|
||||
Direct creation via `\PhpOffice\PhpSpreadsheet\IOFactory`. All examples
|
||||
underneath demonstrate the direct creation method. Note that you can
|
||||
also use the `\PhpOffice\PhpSpreadsheet\IOFactory` class to do this.
|
||||
|
||||
### Creating `\PhpOffice\PhpSpreadsheet\Reader\IReader` using `\PhpOffice\PhpSpreadsheet\IOFactory`
|
||||
|
||||
There are 2 methods for reading in a file into PhpSpreadsheet: using
|
||||
automatic file type resolving or explicitly.
|
||||
|
||||
Automatic file type resolving checks the different
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReader` distributed with
|
||||
PhpSpreadsheet. If one of them can load the specified file name, the
|
||||
file is loaded using that `\PhpOffice\PhpSpreadsheet\Reader\IReader`.
|
||||
Explicit mode requires you to specify which
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReader` should be used.
|
||||
|
||||
You can create a `\PhpOffice\PhpSpreadsheet\Reader\IReader` instance using
|
||||
`\PhpOffice\PhpSpreadsheet\IOFactory` in automatic file type resolving
|
||||
mode using the following code sample:
|
||||
|
||||
``` php
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
A typical use of this feature is when you need to read files uploaded by
|
||||
your users, and you don’t know whether they are uploading xls or xlsx
|
||||
files.
|
||||
|
||||
If you need to set some properties on the reader, (e.g. to only read
|
||||
data, see more about this later), then you may instead want to use this
|
||||
variant:
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile("05featuredemo.xlsx");
|
||||
$reader->setReadDataOnly(true);
|
||||
$reader->load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
You can create a `\PhpOffice\PhpSpreadsheet\Reader\IReader` instance using
|
||||
`\PhpOffice\PhpSpreadsheet\IOFactory` in explicit mode using the following
|
||||
code sample:
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
|
||||
$spreadsheet = $reader->load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
Note that automatic type resolving mode is slightly slower than explicit
|
||||
mode.
|
||||
|
||||
### Creating `\PhpOffice\PhpSpreadsheet\Writer\IWriter` using `\PhpOffice\PhpSpreadsheet\IOFactory`
|
||||
|
||||
You can create a `\PhpOffice\PhpSpreadsheet\Writer\IWriter` instance using
|
||||
`\PhpOffice\PhpSpreadsheet\IOFactory`:
|
||||
|
||||
``` php
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
|
||||
$writer->save("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
## Excel 2007 (SpreadsheetML) file format
|
||||
|
||||
Xlsx file format is the main file format of PhpSpreadsheet. It allows
|
||||
outputting the in-memory spreadsheet to a .xlsx file.
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Xlsx
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an .xlsx file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
||||
$spreadsheet = $reader->load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
#### Read data only
|
||||
|
||||
You can set the option setReadDataOnly on the reader, to instruct the
|
||||
reader to ignore styling, data validation, … and just read cell data:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
||||
$reader->setReadDataOnly(true);
|
||||
$spreadsheet = $reader->load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
#### Read specific sheets only
|
||||
|
||||
You can set the option setLoadSheetsOnly on the reader, to instruct the
|
||||
reader to only load the sheets with a given name:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
||||
$reader->setLoadSheetsOnly( array("Sheet 1", "My special sheet") );
|
||||
$spreadsheet = $reader->load("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
#### Read specific cells only
|
||||
|
||||
You can set the option setReadFilter on the reader, to instruct the
|
||||
reader to only load the cells which match a given rule. A read filter
|
||||
can be any class which implements
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter`. By default, all cells are
|
||||
read using the `\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter`.
|
||||
|
||||
The following code will only read row 1 and rows 20 – 30 of any sheet in
|
||||
the Excel file:
|
||||
|
||||
``` php
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
||||
$reader->setReadFilter( new MyReadFilter() );
|
||||
$spreadsheet = $reader->load("06largescale.xlsx");
|
||||
```
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Writer\Xlsx
|
||||
|
||||
#### Writing a spreadsheet
|
||||
|
||||
You can write an .xlsx file using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
|
||||
$writer->save("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
#### Formula pre-calculation
|
||||
|
||||
By default, this writer pre-calculates all formulas in the spreadsheet.
|
||||
This can be slow on large spreadsheets, and maybe even unwanted. You can
|
||||
however disable formula pre-calculation:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
|
||||
$writer->setPreCalculateFormulas(false);
|
||||
$writer->save("05featuredemo.xlsx");
|
||||
```
|
||||
|
||||
#### Office 2003 compatibility pack
|
||||
|
||||
Because of a bug in the Office2003 compatibility pack, there can be some
|
||||
small issues when opening Xlsx spreadsheets (mostly related to formula
|
||||
calculation). You can enable Office2003 compatibility with the following
|
||||
code:
|
||||
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
|
||||
$writer->setOffice2003Compatibility(true);
|
||||
$writer->save("05featuredemo.xlsx");
|
||||
|
||||
**Office2003 compatibility should only be used when needed** Office2003
|
||||
compatibility option should only be used when needed. This option
|
||||
disables several Office2007 file format options, resulting in a
|
||||
lower-featured Office2007 spreadsheet when this option is used.
|
||||
|
||||
## Excel 5 (BIFF) file format
|
||||
|
||||
Xls file format is the old Excel file format, implemented in
|
||||
PhpSpreadsheet to provide a uniform manner to create both .xlsx and .xls
|
||||
files. It is basically a modified version of [PEAR
|
||||
Spreadsheet\_Excel\_Writer](http://pear.php.net/package/Spreadsheet_Excel_Writer),
|
||||
although it has been extended and has fewer limitations and more
|
||||
features than the old PEAR library. This can read all BIFF versions that
|
||||
use OLE2: BIFF5 (introduced with office 95) through BIFF8, but cannot
|
||||
read earlier versions.
|
||||
|
||||
Xls file format will not be developed any further, it just provides an
|
||||
additional file format for PhpSpreadsheet.
|
||||
|
||||
**Excel5 (BIFF) limitations** Please note that BIFF file format has some
|
||||
limits regarding to styling cells and handling large spreadsheets via
|
||||
PHP.
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Xls
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an .xls file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
||||
$spreadsheet = $reader->load("05featuredemo.xls");
|
||||
```
|
||||
|
||||
#### Read data only
|
||||
|
||||
You can set the option setReadDataOnly on the reader, to instruct the
|
||||
reader to ignore styling, data validation, … and just read cell data:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
||||
$reader->setReadDataOnly(true);
|
||||
$spreadsheet = $reader->load("05featuredemo.xls");
|
||||
```
|
||||
|
||||
#### Read specific sheets only
|
||||
|
||||
You can set the option setLoadSheetsOnly on the reader, to instruct the
|
||||
reader to only load the sheets with a given name:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
||||
$reader->setLoadSheetsOnly( array("Sheet 1", "My special sheet") );
|
||||
$spreadsheet = $reader->load("05featuredemo.xls");
|
||||
```
|
||||
|
||||
#### Read specific cells only
|
||||
|
||||
You can set the option setReadFilter on the reader, to instruct the
|
||||
reader to only load the cells which match a given rule. A read filter
|
||||
can be any class which implements
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter`. By default, all cells are
|
||||
read using the `\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter`.
|
||||
|
||||
The following code will only read row 1 and rows 20 to 30 of any sheet
|
||||
in the Excel file:
|
||||
|
||||
``` php
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
||||
$reader->setReadFilter( new MyReadFilter() );
|
||||
$spreadsheet = $reader->load("06largescale.xls");
|
||||
```
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Writer\Xls
|
||||
|
||||
#### Writing a spreadsheet
|
||||
|
||||
You can write an .xls file using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xls($spreadsheet);
|
||||
$writer->save("05featuredemo.xls");
|
||||
```
|
||||
|
||||
## Excel 2003 XML file format
|
||||
|
||||
Excel 2003 XML file format is a file format which can be used in older
|
||||
versions of Microsoft Excel.
|
||||
|
||||
**Excel 2003 XML limitations** Please note that Excel 2003 XML format
|
||||
has some limits regarding to styling cells and handling large
|
||||
spreadsheets via PHP.
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Xml
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an Excel 2003 .xml file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
|
||||
$spreadsheet = $reader->load("05featuredemo.xml");
|
||||
```
|
||||
|
||||
#### Read specific cells only
|
||||
|
||||
You can set the option setReadFilter on the reader, to instruct the
|
||||
reader to only load the cells which match a given rule. A read filter
|
||||
can be any class which implements
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter`. By default, all cells are
|
||||
read using the `\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter`.
|
||||
|
||||
The following code will only read row 1 and rows 20 to 30 of any sheet
|
||||
in the Excel file:
|
||||
|
||||
``` php
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
|
||||
$reader->setReadFilter( new MyReadFilter() );
|
||||
$spreadsheet = $reader->load("06largescale.xml");
|
||||
```
|
||||
|
||||
## Symbolic LinK (SYLK)
|
||||
|
||||
Symbolic Link (SYLK) is a Microsoft file format typically used to
|
||||
exchange data between applications, specifically spreadsheets. SYLK
|
||||
files conventionally have a .slk suffix. Composed of only displayable
|
||||
ANSI characters, it can be easily created and processed by other
|
||||
applications, such as databases.
|
||||
|
||||
**SYLK limitations** Please note that SYLK file format has some limits
|
||||
regarding to styling cells and handling large spreadsheets via PHP.
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Slk
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an .slk file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
|
||||
$spreadsheet = $reader->load("05featuredemo.slk");
|
||||
```
|
||||
|
||||
#### Read specific cells only
|
||||
|
||||
You can set the option setReadFilter on the reader, to instruct the
|
||||
reader to only load the cells which match a given rule. A read filter
|
||||
can be any class which implements
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter`. By default, all cells are
|
||||
read using the `\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter`.
|
||||
|
||||
The following code will only read row 1 and rows 20 to 30 of any sheet
|
||||
in the SYLK file:
|
||||
|
||||
``` php
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
|
||||
$reader->setReadFilter( new MyReadFilter() );
|
||||
$spreadsheet = $reader->load("06largescale.slk");
|
||||
```
|
||||
|
||||
## Open/Libre Office (.ods)
|
||||
|
||||
Open Office or Libre Office .ods files are the standard file format for
|
||||
Open Office or Libre Office Calc files.
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Ods
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an .ods file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
|
||||
$spreadsheet = $reader->load("05featuredemo.ods");
|
||||
```
|
||||
|
||||
#### Read specific cells only
|
||||
|
||||
You can set the option setReadFilter on the reader, to instruct the
|
||||
reader to only load the cells which match a given rule. A read filter
|
||||
can be any class which implements
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter`. By default, all cells are
|
||||
read using the `\PhpOffice\PhpSpreadsheet\Reader\DefaultReadFilter`.
|
||||
|
||||
The following code will only read row 1 and rows 20 to 30 of any sheet
|
||||
in the Calc file:
|
||||
|
||||
``` php
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read title row and rows 20 - 30
|
||||
if ($row == 1 || ($row >= 20 && $row <= 30)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$reader = new PhpOffice\PhpSpreadsheet\Reader\Ods();
|
||||
$reader->setReadFilter( new MyReadFilter() );
|
||||
$spreadsheet = $reader->load("06largescale.ods");
|
||||
```
|
||||
|
||||
## CSV (Comma Separated Values)
|
||||
|
||||
CSV (Comma Separated Values) are often used as an import/export file
|
||||
format with other systems. PhpSpreadsheet allows reading and writing to
|
||||
CSV files.
|
||||
|
||||
**CSV limitations** Please note that CSV file format has some limits
|
||||
regarding to styling cells, number formatting, ...
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Csv
|
||||
|
||||
#### Reading a CSV file
|
||||
|
||||
You can read a .csv file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
|
||||
$spreadsheet = $reader->load("sample.csv");
|
||||
```
|
||||
|
||||
#### Setting CSV options
|
||||
|
||||
Often, CSV files are not really "comma separated", or use semicolon (`;`)
|
||||
as a separator. You can instruct
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\Csv` some options before reading a CSV
|
||||
file.
|
||||
|
||||
The separator will be auto-detected, so in most cases it should not be necessary
|
||||
to specify it. But in cases where auto-detection does not fit the use-case, then
|
||||
it can be set manually.
|
||||
|
||||
Note that `\PhpOffice\PhpSpreadsheet\Reader\Csv` by default assumes that
|
||||
the loaded CSV file is UTF-8 encoded. If you are reading CSV files that
|
||||
were created in Microsoft Office Excel the correct input encoding may
|
||||
rather be Windows-1252 (CP1252). Always make sure that the input
|
||||
encoding is set appropriately.
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
|
||||
$reader->setInputEncoding('CP1252');
|
||||
$reader->setDelimiter(';');
|
||||
$reader->setEnclosure('');
|
||||
$reader->setSheetIndex(0);
|
||||
|
||||
$spreadsheet = $reader->load("sample.csv");
|
||||
```
|
||||
|
||||
#### Read a specific worksheet
|
||||
|
||||
CSV files can only contain one worksheet. Therefore, you can specify
|
||||
which sheet to read from CSV:
|
||||
|
||||
``` php
|
||||
$reader->setSheetIndex(0);
|
||||
```
|
||||
|
||||
#### Read into existing spreadsheet
|
||||
|
||||
When working with CSV files, it might occur that you want to import CSV
|
||||
data into an existing `Spreadsheet` object. The following code loads a
|
||||
CSV file into an existing `$spreadsheet` containing some sheets, and
|
||||
imports onto the 6th sheet:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
|
||||
$reader->setDelimiter(';');
|
||||
$reader->setEnclosure('');
|
||||
$reader->setSheetIndex(5);
|
||||
|
||||
$reader->loadIntoExisting("05featuredemo.csv", $spreadsheet);
|
||||
```
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Writer\Csv
|
||||
|
||||
#### Writing a CSV file
|
||||
|
||||
You can write a .csv file using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
|
||||
$writer->save("05featuredemo.csv");
|
||||
```
|
||||
|
||||
#### Setting CSV options
|
||||
|
||||
Often, CSV files are not really "comma separated", or use semicolon (`;`)
|
||||
as a separator. You can instruct
|
||||
`\PhpOffice\PhpSpreadsheet\Writer\Csv` some options before writing a CSV
|
||||
file:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
|
||||
$writer->setDelimiter(';');
|
||||
$writer->setEnclosure('');
|
||||
$writer->setLineEnding("\r\n");
|
||||
$writer->setSheetIndex(0);
|
||||
|
||||
$writer->save("05featuredemo.csv");
|
||||
```
|
||||
|
||||
#### Write a specific worksheet
|
||||
|
||||
CSV files can only contain one worksheet. Therefore, you can specify
|
||||
which sheet to write to CSV:
|
||||
|
||||
``` php
|
||||
$writer->setSheetIndex(0);
|
||||
```
|
||||
|
||||
#### Formula pre-calculation
|
||||
|
||||
By default, this writer pre-calculates all formulas in the spreadsheet.
|
||||
This can be slow on large spreadsheets, and maybe even unwanted. You can
|
||||
however disable formula pre-calculation:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
|
||||
$writer->setPreCalculateFormulas(false);
|
||||
$writer->save("05featuredemo.csv");
|
||||
```
|
||||
|
||||
#### Writing UTF-8 CSV files
|
||||
|
||||
A CSV file can be marked as UTF-8 by writing a BOM file header. This can
|
||||
be enabled by using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
|
||||
$writer->setUseBOM(true);
|
||||
$writer->save("05featuredemo.csv");
|
||||
```
|
||||
|
||||
#### Decimal and thousands separators
|
||||
|
||||
If the worksheet you are exporting contains numbers with decimal or
|
||||
thousands separators then you should think about what characters you
|
||||
want to use for those before doing the export.
|
||||
|
||||
By default PhpSpreadsheet looks up in the server's locale settings to
|
||||
decide what characters to use. But to avoid problems it is recommended
|
||||
to set the characters explicitly as shown below.
|
||||
|
||||
English users will want to use this before doing the export:
|
||||
|
||||
``` php
|
||||
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setDecimalSeparator('.');
|
||||
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setThousandsSeparator(',');
|
||||
```
|
||||
|
||||
German users will want to use the opposite values.
|
||||
|
||||
``` php
|
||||
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setDecimalSeparator(',');
|
||||
\PhpOffice\PhpSpreadsheet\Shared\StringHelper::setThousandsSeparator('.');
|
||||
```
|
||||
|
||||
Note that the above code sets decimal and thousand separators as global
|
||||
options. This also affects how HTML and PDF is exported.
|
||||
|
||||
## HTML
|
||||
|
||||
PhpSpreadsheet allows you to read or write a spreadsheet as HTML format,
|
||||
for quick representation of the data in it to anyone who does not have a
|
||||
spreadsheet application on their PC, or loading files saved by other
|
||||
scripts that simply create HTML markup and give it a .xls file
|
||||
extension.
|
||||
|
||||
**HTML limitations** Please note that HTML file format has some limits
|
||||
regarding to styling cells, number formatting, ...
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Reader\Html
|
||||
|
||||
#### Reading a spreadsheet
|
||||
|
||||
You can read an .html or .htm file using the following code:
|
||||
|
||||
``` php
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
|
||||
|
||||
$spreadsheet = $reader->load("05featuredemo.html");
|
||||
```
|
||||
|
||||
**HTML limitations** Please note that HTML reader is still experimental
|
||||
and does not yet support merged cells or nested tables cleanly
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Writer\Html
|
||||
|
||||
Please note that `\PhpOffice\PhpSpreadsheet\Writer\Html` only outputs the
|
||||
first worksheet by default.
|
||||
|
||||
#### Writing a spreadsheet
|
||||
|
||||
You can write a .htm file using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
|
||||
|
||||
$writer->save("05featuredemo.htm");
|
||||
```
|
||||
|
||||
#### Write all worksheets
|
||||
|
||||
HTML files can contain one or more worksheets. If you want to write all
|
||||
sheets into a single HTML file, use the following code:
|
||||
|
||||
``` php
|
||||
$writer->writeAllSheets();
|
||||
```
|
||||
|
||||
#### Write a specific worksheet
|
||||
|
||||
HTML files can contain one or more worksheets. Therefore, you can
|
||||
specify which sheet to write to HTML:
|
||||
|
||||
``` php
|
||||
$writer->setSheetIndex(0);
|
||||
```
|
||||
|
||||
#### Setting the images root of the HTML file
|
||||
|
||||
There might be situations where you want to explicitly set the included
|
||||
images root. For example, one might want to see
|
||||
|
||||
``` html
|
||||
<img style="position: relative; left: 0px; top: 0px; width: 140px; height: 78px;" src="http://www.domain.com/*images/logo.jpg" border="0">
|
||||
```
|
||||
|
||||
instead of
|
||||
|
||||
``` html
|
||||
<img style="position: relative; left: 0px; top: 0px; width: 140px; height: 78px;" src="./images/logo.jpg" border="0">.
|
||||
```
|
||||
|
||||
You can use the following code to achieve this result:
|
||||
|
||||
``` php
|
||||
$writer->setImagesRoot('http://www.example.com');
|
||||
```
|
||||
|
||||
#### Formula pre-calculation
|
||||
|
||||
By default, this writer pre-calculates all formulas in the spreadsheet.
|
||||
This can be slow on large spreadsheets, and maybe even unwanted. You can
|
||||
however disable formula pre-calculation:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
|
||||
$writer->setPreCalculateFormulas(false);
|
||||
|
||||
$writer->save("05featuredemo.htm");
|
||||
```
|
||||
|
||||
#### Embedding generated HTML in a web page
|
||||
|
||||
There might be a situation where you want to embed the generated HTML in
|
||||
an existing website. \PhpOffice\PhpSpreadsheet\Writer\Html provides
|
||||
support to generate only specific parts of the HTML code, which allows
|
||||
you to use these parts in your website.
|
||||
|
||||
Supported methods:
|
||||
|
||||
- `generateHTMLHeader()`
|
||||
- `generateStyles()`
|
||||
- `generateSheetData()`
|
||||
- `generateHTMLFooter()`
|
||||
|
||||
Here's an example which retrieves all parts independently and merges
|
||||
them into a resulting HTML page:
|
||||
|
||||
``` php
|
||||
<?php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
|
||||
echo $writer->generateHTMLHeader();
|
||||
?>
|
||||
|
||||
<style>
|
||||
<!--
|
||||
html {
|
||||
font-family: Times New Roman;
|
||||
font-size: 9pt;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
<?php
|
||||
echo $writer->generateStyles(false); // do not write <style> and </style>
|
||||
?>
|
||||
|
||||
-->
|
||||
</style>
|
||||
|
||||
<?php
|
||||
echo $writer->generateSheetData();
|
||||
echo $writer->generateHTMLFooter();
|
||||
?>
|
||||
```
|
||||
|
||||
#### Writing UTF-8 HTML files
|
||||
|
||||
A HTML file can be marked as UTF-8 by writing a BOM file header. This
|
||||
can be enabled by using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);
|
||||
$writer->setUseBOM(true);
|
||||
|
||||
$writer->save("05featuredemo.htm");
|
||||
```
|
||||
|
||||
#### Decimal and thousands separators
|
||||
|
||||
See section `\PhpOffice\PhpSpreadsheet\Writer\Csv` how to control the
|
||||
appearance of these.
|
||||
|
||||
## PDF
|
||||
|
||||
PhpSpreadsheet allows you to write a spreadsheet into PDF format, for
|
||||
fast distribution of represented data.
|
||||
|
||||
**PDF limitations** Please note that PDF file format has some limits
|
||||
regarding to styling cells, number formatting, ...
|
||||
|
||||
### \PhpOffice\PhpSpreadsheet\Writer\Pdf
|
||||
|
||||
PhpSpreadsheet’s PDF Writer is a wrapper for a 3rd-Party PDF Rendering
|
||||
library such as TCPDF, mPDF or Dompdf. You must now install a PDF
|
||||
rendering library yourself; but PhpSpreadsheet will work with a number
|
||||
of different libraries.
|
||||
|
||||
Currently, the following libraries are supported:
|
||||
|
||||
Library | Downloadable from | PhpSpreadsheet writer
|
||||
--------|-------------------------------------|----------------------
|
||||
TCPDF | https://github.com/tecnickcom/tcpdf | Tcpdf
|
||||
mPDF | https://github.com/mpdf/mpdf | Mpdf
|
||||
Dompdf | https://github.com/dompdf/dompdf | Dompdf
|
||||
|
||||
The different libraries have different strengths and weaknesses. Some
|
||||
generate better formatted output than others, some are faster or use
|
||||
less memory than others, while some generate smaller .pdf files. It is
|
||||
the developers choice which one they wish to use, appropriate to their
|
||||
own circumstances.
|
||||
|
||||
You can instantiate a writer with its specific name, like so:
|
||||
|
||||
``` php
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Mpdf');
|
||||
```
|
||||
|
||||
Or you can register which writer you are using with a more generic name,
|
||||
so you don't need to remember which library you chose, only that you want
|
||||
to write PDF files:
|
||||
|
||||
``` php
|
||||
$class = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf::class;
|
||||
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', $class);
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Pdf');
|
||||
```
|
||||
|
||||
Or you can instantiate directly the writer of your choice like so:
|
||||
|
||||
``` php
|
||||
$writer = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
|
||||
```
|
||||
|
||||
#### Custom implementation or configuration
|
||||
|
||||
If you need a custom implementation, or custom configuration, of a supported
|
||||
PDF library. You can extends the PDF library, and the PDF writer like so:
|
||||
|
||||
``` php
|
||||
class My_Custom_TCPDF extends TCPDF
|
||||
{
|
||||
// ...
|
||||
}
|
||||
|
||||
class My_Custom_TCPDF_Writer extends \PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf
|
||||
{
|
||||
protected function createExternalWriterInstance($orientation, $unit, $paperSize)
|
||||
{
|
||||
$instance = new My_Custom_TCPDF($orientation, $unit, $paperSize);
|
||||
|
||||
// more configuration of $instance
|
||||
|
||||
return $instance;
|
||||
}
|
||||
}
|
||||
|
||||
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', MY_TCPDF_WRITER::class);
|
||||
```
|
||||
|
||||
#### Writing a spreadsheet
|
||||
|
||||
Once you have identified the Renderer that you wish to use for PDF
|
||||
generation, you can write a .pdf file using the following code:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
|
||||
$writer->save("05featuredemo.pdf");
|
||||
```
|
||||
|
||||
Please note that `\PhpOffice\PhpSpreadsheet\Writer\Pdf` only outputs the
|
||||
first worksheet by default.
|
||||
|
||||
#### Write all worksheets
|
||||
|
||||
PDF files can contain one or more worksheets. If you want to write all
|
||||
sheets into a single PDF file, use the following code:
|
||||
|
||||
``` php
|
||||
$writer->writeAllSheets();
|
||||
```
|
||||
|
||||
#### Write a specific worksheet
|
||||
|
||||
PDF files can contain one or more worksheets. Therefore, you can specify
|
||||
which sheet to write to PDF:
|
||||
|
||||
``` php
|
||||
$writer->setSheetIndex(0);
|
||||
```
|
||||
|
||||
#### Formula pre-calculation
|
||||
|
||||
By default, this writer pre-calculates all formulas in the spreadsheet.
|
||||
This can be slow on large spreadsheets, and maybe even unwanted. You can
|
||||
however disable formula pre-calculation:
|
||||
|
||||
``` php
|
||||
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
|
||||
$writer->setPreCalculateFormulas(false);
|
||||
|
||||
$writer->save("05featuredemo.pdf");
|
||||
```
|
||||
|
||||
#### Decimal and thousands separators
|
||||
|
||||
See section `\PhpOffice\PhpSpreadsheet\Writer\Csv` how to control the
|
||||
appearance of these.
|
||||
|
||||
## Generating Excel files from templates (read, modify, write)
|
||||
|
||||
Readers and writers are the tools that allow you to generate Excel files
|
||||
from templates. This requires less coding effort than generating the
|
||||
Excel file from scratch, especially if your template has many styles,
|
||||
page setup properties, headers etc.
|
||||
|
||||
Here is an example how to open a template file, fill in a couple of
|
||||
fields and save it again:
|
||||
|
||||
``` php
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
|
||||
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
$worksheet->getCell('A1')->setValue('John');
|
||||
$worksheet->getCell('A2')->setValue('Smith');
|
||||
|
||||
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
|
||||
$writer->save('write.xls');
|
||||
```
|
||||
|
||||
Notice that it is ok to load an xlsx file and generate an xls file.
|
688
inc/vendor/phpoffice/phpspreadsheet/docs/topics/reading-files.md
vendored
Normal file
@ -0,0 +1,688 @@
|
||||
# Reading Files
|
||||
|
||||
## Security
|
||||
|
||||
XML-based formats such as OfficeOpen XML, Excel2003 XML, OASIS and
|
||||
Gnumeric are susceptible to XML External Entity Processing (XXE)
|
||||
injection attacks when reading spreadsheet files. This can lead to:
|
||||
|
||||
- Disclosure whether a file is existent
|
||||
- Server Side Request Forgery
|
||||
- Command Execution (depending on the installed PHP wrappers)
|
||||
|
||||
To prevent this, by default every XML-based Reader looks for XML
|
||||
entities declared inside the DOCTYPE and if any is found an exception
|
||||
is raised.
|
||||
|
||||
Read more [about of XXE injection](https://websec.io/2012/08/27/Preventing-XXE-in-PHP.html).
|
||||
|
||||
## Loading a Spreadsheet File
|
||||
|
||||
The simplest way to load a workbook file is to let PhpSpreadsheet's IO
|
||||
Factory identify the file type and load it, calling the static `load()`
|
||||
method of the `\PhpOffice\PhpSpreadsheet\IOFactory` class.
|
||||
|
||||
``` php
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/01_Simple_file_reader_using_IOFactory.php` for a working
|
||||
example of this code.
|
||||
|
||||
The `load()` method will attempt to identify the file type, and
|
||||
instantiate a loader for that file type; using it to load the file and
|
||||
store the data and any formatting in a `Spreadsheet` object.
|
||||
|
||||
The method makes an initial guess at the loader to instantiate based on
|
||||
the file extension; but will test the file before actually executing the
|
||||
load: so if (for example) the file is actually a CSV file or contains
|
||||
HTML markup, but that has been given a .xls extension (quite a common
|
||||
practise), it will reject the Xls loader that it would normally use for
|
||||
a .xls file; and test the file using the other loaders until it finds
|
||||
the appropriate loader, and then use that to read the file.
|
||||
|
||||
While easy to implement in your code, and you don't need to worry about
|
||||
the file type; this isn't the most efficient method to load a file; and
|
||||
it lacks the flexibility to configure the loader in any way before
|
||||
actually reading the file into a `Spreadsheet` object.
|
||||
|
||||
## Creating a Reader and Loading a Spreadsheet File
|
||||
|
||||
If you know the file type of the spreadsheet file that you need to load,
|
||||
you can instantiate a new reader object for that file type, then use the
|
||||
reader's `load()` method to read the file to a `Spreadsheet` object. It is
|
||||
possible to instantiate the reader objects for each of the different
|
||||
supported filetype by name. However, you may get unpredictable results
|
||||
if the file isn't of the right type (e.g. it is a CSV with an extension
|
||||
of .xls), although this type of exception should normally be trapped.
|
||||
|
||||
``` php
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Create a new Xls Reader **/
|
||||
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric();
|
||||
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/02_Simple_file_reader_using_a_specified_reader.php`
|
||||
for a working example of this code.
|
||||
|
||||
Alternatively, you can use the IO Factory's `createReader()` method to
|
||||
instantiate the reader object for you, simply telling it the file type
|
||||
of the reader that you want instantiating.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
// $inputFileType = 'Xlsx';
|
||||
// $inputFileType = 'Xml';
|
||||
// $inputFileType = 'Ods';
|
||||
// $inputFileType = 'Slk';
|
||||
// $inputFileType = 'Gnumeric';
|
||||
// $inputFileType = 'Csv';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/03_Simple_file_reader_using_the_IOFactory_to_return_a_reader.php`
|
||||
for a working example of this code.
|
||||
|
||||
If you're uncertain of the filetype, you can use the `IOFactory::identify()`
|
||||
method to identify the reader that you need, before using the
|
||||
`createReader()` method to instantiate the reader object.
|
||||
|
||||
``` php
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Identify the type of $inputFileName **/
|
||||
$inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($inputFileName);
|
||||
/** Create a new Reader of the type that has been identified **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/04_Simple_file_reader_using_the_IOFactory_to_identify_a_reader_to_use.php`
|
||||
for a working example of this code.
|
||||
|
||||
## Spreadsheet Reader Options
|
||||
|
||||
Once you have created a reader object for the workbook that you want to
|
||||
load, you have the opportunity to set additional options before
|
||||
executing the `load()` method.
|
||||
|
||||
### Reading Only Data from a Spreadsheet File
|
||||
|
||||
If you're only interested in the cell values in a workbook, but don't
|
||||
need any of the cell formatting information, then you can set the reader
|
||||
to read only the data values and any formulae from each cell using the
|
||||
`setReadDataOnly()` method.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Advise the Reader that we only want to load cell data **/
|
||||
$reader->setReadDataOnly(true);
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/05_Simple_file_reader_using_the_read_data_only_option.php`
|
||||
for a working example of this code.
|
||||
|
||||
It is important to note that Workbooks (and PhpSpreadsheet) store dates
|
||||
and times as simple numeric values: they can only be distinguished from
|
||||
other numeric values by the format mask that is applied to that cell.
|
||||
When setting read data only to true, PhpSpreadsheet doesn't read the
|
||||
cell format masks, so it is not possible to differentiate between
|
||||
dates/times and numbers.
|
||||
|
||||
The Gnumeric loader has been written to read the format masks for date
|
||||
values even when read data only has been set to true, so it can
|
||||
differentiate between dates/times and numbers; but this change hasn't
|
||||
yet been implemented for the other readers.
|
||||
|
||||
Reading Only Data from a Spreadsheet File applies to Readers:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | YES | Xls | YES | Xml | YES |
|
||||
Ods | YES | SYLK | NO | Gnumeric | YES |
|
||||
CSV | NO | HTML | NO
|
||||
|
||||
### Reading Only Named WorkSheets from a File
|
||||
|
||||
If your workbook contains a number of worksheets, but you are only
|
||||
interested in reading some of those, then you can use the
|
||||
`setLoadSheetsOnly()` method to identify those sheets you are interested
|
||||
in reading.
|
||||
|
||||
To read a single sheet, you can pass that sheet name as a parameter to
|
||||
the `setLoadSheetsOnly()` method.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
$sheetname = 'Data Sheet #2';
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Advise the Reader of which WorkSheets we want to load **/
|
||||
$reader->setLoadSheetsOnly($sheetname);
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/07_Simple_file_reader_loading_a_single_named_worksheet.php`
|
||||
for a working example of this code.
|
||||
|
||||
If you want to read more than just a single sheet, you can pass a list
|
||||
of sheet names as an array parameter to the `setLoadSheetsOnly()` method.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
$sheetnames = array('Data Sheet #1','Data Sheet #3');
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Advise the Reader of which WorkSheets we want to load **/
|
||||
$reader->setLoadSheetsOnly($sheetnames);
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/08_Simple_file_reader_loading_several_named_worksheets.php`
|
||||
for a working example of this code.
|
||||
|
||||
To reset this option to the default, you can call the `setLoadAllSheets()`
|
||||
method.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Advise the Reader to load all Worksheets **/
|
||||
$reader->setLoadAllSheets();
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/06_Simple_file_reader_loading_all_worksheets.php` for a
|
||||
working example of this code.
|
||||
|
||||
Reading Only Named WorkSheets from a File applies to Readers:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | YES | Xls | YES | Xml | YES |
|
||||
Ods | YES | SYLK | NO | Gnumeric | YES |
|
||||
CSV | NO | HTML | NO
|
||||
|
||||
### Reading Only Specific Columns and Rows from a File (Read Filters)
|
||||
|
||||
If you are only interested in reading part of a worksheet, then you can
|
||||
write a filter class that identifies whether or not individual cells
|
||||
should be read by the loader. A read filter must implement the
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\IReadFilter` interface, and contain a
|
||||
`readCell()` method that accepts arguments of `$column`, `$row` and
|
||||
`$worksheetName`, and return a boolean true or false that indicates
|
||||
whether a workbook cell identified by those arguments should be read or
|
||||
not.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example1.xls';
|
||||
$sheetname = 'Data Sheet #3';
|
||||
|
||||
/** Define a Read Filter class implementing \PhpOffice\PhpSpreadsheet\Reader\IReadFilter */
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
|
||||
{
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Read rows 1 to 7 and columns A to E only
|
||||
if ($row >= 1 && $row <= 7) {
|
||||
if (in_array($column,range('A','E'))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/** Create an Instance of our Read Filter **/
|
||||
$filterSubset = new MyReadFilter();
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Tell the Reader that we want to use the Read Filter **/
|
||||
$reader->setReadFilter($filterSubset);
|
||||
/** Load only the rows and columns that match our filter to Spreadsheet **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/09_Simple_file_reader_using_a_read_filter.php` for a
|
||||
working example of this code.
|
||||
|
||||
This example is not particularly useful, because it can only be used in
|
||||
a very specific circumstance (when you only want cells in the range
|
||||
A1:E7 from your worksheet. A generic Read Filter would probably be more
|
||||
useful:
|
||||
|
||||
``` php
|
||||
/** Define a Read Filter class implementing \PhpOffice\PhpSpreadsheet\Reader\IReadFilter */
|
||||
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
|
||||
{
|
||||
private $startRow = 0;
|
||||
private $endRow = 0;
|
||||
private $columns = array();
|
||||
|
||||
/** Get the list of rows and columns to read */
|
||||
public function __construct($startRow, $endRow, $columns) {
|
||||
$this->startRow = $startRow;
|
||||
$this->endRow = $endRow;
|
||||
$this->columns = $columns;
|
||||
}
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Only read the rows and columns that were configured
|
||||
if ($row >= $this->startRow && $row <= $this->endRow) {
|
||||
if (in_array($column,$this->columns)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/** Create an Instance of our Read Filter, passing in the cell range **/
|
||||
$filterSubset = new MyReadFilter(9,15,range('G','K'));
|
||||
```
|
||||
|
||||
See `samples/Reader/10_Simple_file_reader_using_a_configurable_read_filter.php`
|
||||
for a working example of this code.
|
||||
|
||||
This can be particularly useful for conserving memory, by allowing you
|
||||
to read and process a large workbook in "chunks": an example of this
|
||||
usage might be when transferring data from an Excel worksheet to a
|
||||
database.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Xls';
|
||||
$inputFileName = './sampleData/example2.xls';
|
||||
|
||||
/** Define a Read Filter class implementing \PhpOffice\PhpSpreadsheet\Reader\IReadFilter */
|
||||
class ChunkReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
|
||||
{
|
||||
private $startRow = 0;
|
||||
private $endRow = 0;
|
||||
|
||||
/** Set the list of rows that we want to read */
|
||||
public function setRows($startRow, $chunkSize) {
|
||||
$this->startRow = $startRow;
|
||||
$this->endRow = $startRow + $chunkSize;
|
||||
}
|
||||
|
||||
public function readCell($column, $row, $worksheetName = '') {
|
||||
// Only read the heading row, and the configured rows
|
||||
if (($row == 1) || ($row >= $this->startRow && $row < $this->endRow)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
|
||||
/** Define how many rows we want to read for each "chunk" **/
|
||||
$chunkSize = 2048;
|
||||
/** Create a new Instance of our Read Filter **/
|
||||
$chunkFilter = new ChunkReadFilter();
|
||||
|
||||
/** Tell the Reader that we want to use the Read Filter **/
|
||||
$reader->setReadFilter($chunkFilter);
|
||||
|
||||
/** Loop to read our worksheet in "chunk size" blocks **/
|
||||
for ($startRow = 2; $startRow <= 65536; $startRow += $chunkSize) {
|
||||
/** Tell the Read Filter which rows we want this iteration **/
|
||||
$chunkFilter->setRows($startRow,$chunkSize);
|
||||
/** Load only the rows that match our filter **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
// Do some processing here
|
||||
}
|
||||
```
|
||||
|
||||
See `samples/Reader/12_Reading_a_workbook_in_chunks_using_a_configurable_read_filter_`
|
||||
for a working example of this code.
|
||||
|
||||
Using Read Filters applies to:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | YES | Xls | YES | Xml | YES |
|
||||
Ods | YES | SYLK | NO | Gnumeric | YES |
|
||||
CSV | YES | HTML | NO | | |
|
||||
|
||||
### Combining Multiple Files into a Single Spreadsheet Object
|
||||
|
||||
While you can limit the number of worksheets that are read from a
|
||||
workbook file using the `setLoadSheetsOnly()` method, certain readers also
|
||||
allow you to combine several individual "sheets" from different files
|
||||
into a single `Spreadsheet` object, where each individual file is a
|
||||
single worksheet within that workbook. For each file that you read, you
|
||||
need to indicate which worksheet index it should be loaded into using
|
||||
the `setSheetIndex()` method of the `$reader`, then use the
|
||||
`loadIntoExisting()` method rather than the `load()` method to actually read
|
||||
the file into that worksheet.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Csv';
|
||||
$inputFileNames = array('./sampleData/example1.csv',
|
||||
'./sampleData/example2.csv'
|
||||
'./sampleData/example3.csv'
|
||||
);
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
|
||||
/** Extract the first named file from the array list **/
|
||||
$inputFileName = array_shift($inputFileNames);
|
||||
/** Load the initial file to the first worksheet in a `Spreadsheet` Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
/** Set the worksheet title (to the filename that we've loaded) **/
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
|
||||
|
||||
/** Loop through all the remaining files in the list **/
|
||||
foreach($inputFileNames as $sheet => $inputFileName) {
|
||||
/** Increment the worksheet index pointer for the Reader **/
|
||||
$reader->setSheetIndex($sheet+1);
|
||||
/** Load the current file into a new worksheet in Spreadsheet **/
|
||||
$reader->loadIntoExisting($inputFileName,$spreadsheet);
|
||||
/** Set the worksheet title (to the filename that we've loaded) **/
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
|
||||
}
|
||||
```
|
||||
|
||||
See `samples/Reader/13_Simple_file_reader_for_multiple_CSV_files.php` for a
|
||||
working example of this code.
|
||||
|
||||
Note that using the same sheet index for multiple sheets won't append
|
||||
files into the same sheet, but overwrite the results of the previous
|
||||
load. You cannot load multiple CSV files into the same worksheet.
|
||||
|
||||
Combining Multiple Files into a Single Spreadsheet Object applies to:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | NO | Xls | NO | Xml | NO |
|
||||
Ods | NO | SYLK | YES | Gnumeric | NO |
|
||||
CSV | YES | HTML | NO
|
||||
|
||||
### Combining Read Filters with the `setSheetIndex()` method to split a large CSV file across multiple Worksheets
|
||||
|
||||
An Xls BIFF .xls file is limited to 65536 rows in a worksheet, while the
|
||||
Xlsx Microsoft Office Open XML SpreadsheetML .xlsx file is limited to
|
||||
1,048,576 rows in a worksheet; but a CSV file is not limited other than
|
||||
by available disk space. This means that we wouldn’t ordinarily be able
|
||||
to read all the rows from a very large CSV file that exceeded those
|
||||
limits, and save it as an Xls or Xlsx file. However, by using Read
|
||||
Filters to read the CSV file in "chunks" (using the ChunkReadFilter
|
||||
Class that we defined in [the above section](#reading-only-specific-columns-and-rows-from-a-file-read-filters),
|
||||
and the `setSheetIndex()` method of the `$reader`, we can split the CSV
|
||||
file across several individual worksheets.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Csv';
|
||||
$inputFileName = './sampleData/example2.csv';
|
||||
|
||||
echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory with a defined reader type of ',$inputFileType,'<br />';
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
|
||||
/** Define how many rows we want to read for each "chunk" **/
|
||||
$chunkSize = 65530;
|
||||
/** Create a new Instance of our Read Filter **/
|
||||
$chunkFilter = new ChunkReadFilter();
|
||||
|
||||
/** Tell the Reader that we want to use the Read Filter **/
|
||||
/** and that we want to store it in contiguous rows/columns **/
|
||||
|
||||
$reader->setReadFilter($chunkFilter)
|
||||
->setContiguous(true);
|
||||
|
||||
/** Instantiate a new Spreadsheet object manually **/
|
||||
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
||||
|
||||
/** Set a sheet index **/
|
||||
$sheet = 0;
|
||||
/** Loop to read our worksheet in "chunk size" blocks **/
|
||||
/** $startRow is set to 2 initially because we always read the headings in row #1 **/
|
||||
for ($startRow = 2; $startRow <= 1000000; $startRow += $chunkSize) {
|
||||
/** Tell the Read Filter which rows we want to read this loop **/
|
||||
$chunkFilter->setRows($startRow,$chunkSize);
|
||||
|
||||
/** Increment the worksheet index pointer for the Reader **/
|
||||
$reader->setSheetIndex($sheet);
|
||||
/** Load only the rows that match our filter into a new worksheet **/
|
||||
$reader->loadIntoExisting($inputFileName,$spreadsheet);
|
||||
/** Set the worksheet title for the sheet that we've justloaded) **/
|
||||
/** and increment the sheet index as well **/
|
||||
$spreadsheet->getActiveSheet()->setTitle('Country Data #'.(++$sheet));
|
||||
}
|
||||
```
|
||||
|
||||
See `samples/Reader/14_Reading_a_large_CSV_file_in_chunks_to_split_across_multiple_worksheets.php`
|
||||
for a working example of this code.
|
||||
|
||||
This code will read 65,530 rows at a time from the CSV file that we’re
|
||||
loading, and store each "chunk" in a new worksheet.
|
||||
|
||||
The `setContiguous()` method for the Reader is important here. It is
|
||||
applicable only when working with a Read Filter, and identifies whether
|
||||
or not the cells should be stored by their position within the CSV file,
|
||||
or their position relative to the filter.
|
||||
|
||||
For example, if the filter returned true for cells in the range B2:C3,
|
||||
then with setContiguous set to false (the default) these would be loaded
|
||||
as B2:C3 in the `Spreadsheet` object; but with setContiguous set to
|
||||
true, they would be loaded as A1:B2.
|
||||
|
||||
Splitting a single loaded file across multiple worksheets applies to:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | NO | Xls | NO | Xml | NO |
|
||||
Ods | NO | SYLK | NO | Gnumeric | NO |
|
||||
CSV | YES | HTML | NO
|
||||
|
||||
### Pipe or Tab Separated Value Files
|
||||
|
||||
The CSV loader will attempt to auto-detect the separator used in the file. If it
|
||||
cannot auto-detect, it will default to the comma. If this does not fit your
|
||||
use-case, you can manually specify a separator by using the `setDelimiter()`
|
||||
method.
|
||||
|
||||
``` php
|
||||
$inputFileType = 'Csv';
|
||||
$inputFileName = './sampleData/example1.tsv';
|
||||
|
||||
/** Create a new Reader of the type defined in $inputFileType **/
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
/** Set the delimiter to a TAB character **/
|
||||
$reader->setDelimiter("\t");
|
||||
// $reader->setDelimiter('|');
|
||||
|
||||
/** Load the file to a Spreadsheet Object **/
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/15_Simple_file_reader_for_tab_separated_value_file_using_the_Advanced_Value_Binder.php`
|
||||
for a working example of this code.
|
||||
|
||||
In addition to the delimiter, you can also use the following methods to
|
||||
set other attributes for the data load:
|
||||
|
||||
Method | Default
|
||||
-------------------|----------
|
||||
setEnclosure() | `"`
|
||||
setInputEncoding() | `UTF-8`
|
||||
|
||||
Setting CSV delimiter applies to:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N |
|
||||
----------|:---:|--------|:---:|--------------|:---:|
|
||||
Xlsx | NO | Xls | NO | Xml | NO |
|
||||
Ods | NO | SYLK | NO | Gnumeric | NO |
|
||||
CSV | YES | HTML | NO
|
||||
|
||||
### A Brief Word about the Advanced Value Binder
|
||||
|
||||
When loading data from a file that contains no formatting information,
|
||||
such as a CSV file, then data is read either as strings or numbers
|
||||
(float or integer). This means that PhpSpreadsheet does not
|
||||
automatically recognise dates/times (such as `16-Apr-2009` or `13:30`),
|
||||
booleans (`true` or `false`), percentages (`75%`), hyperlinks
|
||||
(`https://www.example.com`), etc as anything other than simple strings.
|
||||
However, you can apply additional processing that is executed against
|
||||
these values during the load process within a Value Binder.
|
||||
|
||||
A Value Binder is a class that implement the
|
||||
`\PhpOffice\PhpSpreadsheet\Cell\IValueBinder` interface. It must contain a
|
||||
`bindValue()` method that accepts a `\PhpOffice\PhpSpreadsheet\Cell\Cell` and a
|
||||
value as arguments, and return a boolean `true` or `false` that indicates
|
||||
whether the workbook cell has been populated with the value or not. The
|
||||
Advanced Value Binder implements such a class: amongst other tests, it
|
||||
identifies a string comprising "TRUE" or "FALSE" (based on locale
|
||||
settings) and sets it to a boolean; or a number in scientific format
|
||||
(e.g. "1.234e-5") and converts it to a float; or dates and times,
|
||||
converting them to their Excel timestamp value – before storing the
|
||||
value in the cell object. It also sets formatting for strings that are
|
||||
identified as dates, times or percentages. It could easily be extended
|
||||
to provide additional handling (including text or cell formatting) when
|
||||
it encountered a hyperlink, or HTML markup within a CSV file.
|
||||
|
||||
So using a Value Binder allows a great deal more flexibility in the
|
||||
loader logic when reading unformatted text files.
|
||||
|
||||
``` php
|
||||
/** Tell PhpSpreadsheet that we want to use the Advanced Value Binder **/
|
||||
\PhpOffice\PhpSpreadsheet\Cell\Cell::setValueBinder( new \PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder() );
|
||||
|
||||
$inputFileType = 'Csv';
|
||||
$inputFileName = './sampleData/example1.tsv';
|
||||
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
$reader->setDelimiter("\t");
|
||||
$spreadsheet = $reader->load($inputFileName);
|
||||
```
|
||||
|
||||
See `samples/Reader/15_Simple_file_reader_for_tab_separated_value_file_using_the_Advanced_Value_Binder.php`
|
||||
for a working example of this code.
|
||||
|
||||
Loading using a Value Binder applies to:
|
||||
|
||||
Reader | Y/N |Reader | Y/N |Reader | Y/N
|
||||
----------|:---:|--------|:---:|--------------|:---:
|
||||
Xlsx | NO | Xls | NO | Xml | NO
|
||||
Ods | NO | SYLK | NO | Gnumeric | NO
|
||||
CSV | YES | HTML | YES
|
||||
|
||||
## Error Handling
|
||||
|
||||
Of course, you should always apply some error handling to your scripts
|
||||
as well. PhpSpreadsheet throws exceptions, so you can wrap all your code
|
||||
that accesses the library methods within Try/Catch blocks to trap for
|
||||
any problems that are encountered, and deal with them in an appropriate
|
||||
manner.
|
||||
|
||||
The PhpSpreadsheet Readers throw a
|
||||
`\PhpOffice\PhpSpreadsheet\Reader\Exception`.
|
||||
|
||||
``` php
|
||||
$inputFileName = './sampleData/example-1.xls';
|
||||
|
||||
try {
|
||||
/** Load $inputFileName to a Spreadsheet Object **/
|
||||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
|
||||
} catch(\PhpOffice\PhpSpreadsheet\Reader\Exception $e) {
|
||||
die('Error loading file: '.$e->getMessage());
|
||||
}
|
||||
```
|
||||
|
||||
See `samples/Reader/16_Handling_loader_exceptions_using_TryCatch.php` for a
|
||||
working example of this code.
|
||||
|
||||
## Helper Methods
|
||||
|
||||
You can retrieve a list of worksheet names contained in a file without
|
||||
loading the whole file by using the Reader’s `listWorksheetNames()`
|
||||
method; similarly, a `listWorksheetInfo()` method will retrieve the
|
||||
dimensions of worksheet in a file without needing to load and parse the
|
||||
whole file.
|
||||
|
||||
### listWorksheetNames
|
||||
|
||||
The `listWorksheetNames()` method returns a simple array listing each
|
||||
worksheet name within the workbook:
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
|
||||
$worksheetNames = $reader->listWorksheetNames($inputFileName);
|
||||
|
||||
echo '<h3>Worksheet Names</h3>';
|
||||
echo '<ol>';
|
||||
foreach ($worksheetNames as $worksheetName) {
|
||||
echo '<li>', $worksheetName, '</li>';
|
||||
}
|
||||
echo '</ol>';
|
||||
```
|
||||
|
||||
See `samples/Reader/18_Reading_list_of_worksheets_without_loading_entire_file.php`
|
||||
for a working example of this code.
|
||||
|
||||
### listWorksheetInfo
|
||||
|
||||
The `listWorksheetInfo()` method returns a nested array, with each entry
|
||||
listing the name and dimensions for a worksheet:
|
||||
|
||||
``` php
|
||||
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
|
||||
|
||||
$worksheetData = $reader->listWorksheetInfo($inputFileName);
|
||||
|
||||
echo '<h3>Worksheet Information</h3>';
|
||||
echo '<ol>';
|
||||
foreach ($worksheetData as $worksheet) {
|
||||
echo '<li>', $worksheet['worksheetName'], '<br />';
|
||||
echo 'Rows: ', $worksheet['totalRows'],
|
||||
' Columns: ', $worksheet['totalColumns'], '<br />';
|
||||
echo 'Cell Range: A1:',
|
||||
$worksheet['lastColumnLetter'], $worksheet['totalRows'];
|
||||
echo '</li>';
|
||||
}
|
||||
echo '</ol>';
|
||||
```
|
||||
|
||||
See `samples/Reader/19_Reading_worksheet_information_without_loading_entire_file.php`
|
||||
for a working example of this code.
|
1506
inc/vendor/phpoffice/phpspreadsheet/docs/topics/recipes.md
vendored
Normal file
45
inc/vendor/phpoffice/phpspreadsheet/docs/topics/settings.md
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
# 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 aren't available,
|
||||
then the `setLocale()` method will return an error, 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
|
||||
Formulae](./recipes.md#locale-settings-for-formulae).
|
130
inc/vendor/phpoffice/phpspreadsheet/docs/topics/worksheets.md
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
# Worksheets
|
||||
|
||||
A worksheet is a collection of cells, formulae, images, graphs, etc. It
|
||||
holds all data necessary to represent a spreadsheet worksheet.
|
||||
|
||||
When you load a workbook from a spreadsheet file, it will be loaded with
|
||||
all its existing worksheets (unless you specified that only certain
|
||||
sheets should be loaded). When you load from non-spreadsheet files (such
|
||||
as a CSV or HTML file) or from spreadsheet formats that don't identify
|
||||
worksheets by name (such as SYLK), then a single worksheet called
|
||||
"WorkSheet1" will be created containing the data from that file.
|
||||
|
||||
When you instantiate a new workbook, PhpSpreadsheet will create it with
|
||||
a single worksheet called "WorkSheet1".
|
||||
|
||||
The `getSheetCount()` method will tell you the number of worksheets in
|
||||
the workbook; while the `getSheetNames()` method will return a list of
|
||||
all worksheets in the workbook, indexed by the order in which their
|
||||
"tabs" would appear when opened in MS Excel (or other appropriate
|
||||
Spreadsheet program).
|
||||
|
||||
Individual worksheets can be accessed by name, or by their index
|
||||
position in the workbook. The index position represents the order that
|
||||
each worksheet "tab" is shown when the workbook is opened in MS Excel
|
||||
(or other appropriate Spreadsheet program). To access a sheet by its
|
||||
index, use the `getSheet()` method.
|
||||
|
||||
``` php
|
||||
// Get the second sheet in the workbook
|
||||
// Note that sheets are indexed from 0
|
||||
$spreadsheet->getSheet(1);
|
||||
```
|
||||
|
||||
If you don't specify a sheet index, then the first worksheet will be
|
||||
returned.
|
||||
|
||||
Methods also exist allowing you to reorder the worksheets in the
|
||||
workbook.
|
||||
|
||||
To access a sheet by name, use the `getSheetByName()` method, specifying
|
||||
the name of the worksheet that you want to access.
|
||||
|
||||
``` php
|
||||
// Retrieve the worksheet called 'Worksheet 1'
|
||||
$spreadsheet->getSheetByName('Worksheet 1');
|
||||
```
|
||||
|
||||
Alternatively, one worksheet is always the currently active worksheet,
|
||||
and you can access that directly. The currently active worksheet is the
|
||||
one that will be active when the workbook is opened in MS Excel (or
|
||||
other appropriate Spreadsheet program).
|
||||
|
||||
``` php
|
||||
// Retrieve the current active worksheet
|
||||
$spreadsheet->getActiveSheet();
|
||||
```
|
||||
|
||||
You can change the currently active sheet by index or by name using the
|
||||
`setActiveSheetIndex()` and `setActiveSheetIndexByName()` methods.
|
||||
|
||||
## Adding a new Worksheet
|
||||
|
||||
You can add a new worksheet to the workbook using the `createSheet()`
|
||||
method of the `Spreadsheet` object. By default, this will be created as
|
||||
a new "last" sheet; but you can also specify an index position as an
|
||||
argument, and the worksheet will be inserted at that position, shuffling
|
||||
all subsequent worksheets in the collection down a place.
|
||||
|
||||
``` php
|
||||
$spreadsheet->createSheet();
|
||||
```
|
||||
|
||||
A new worksheet created using this method will be called
|
||||
"Worksheet<n>" where "<n>" is the lowest number possible to
|
||||
guarantee that the title is unique.
|
||||
|
||||
Alternatively, you can instantiate a new worksheet (setting the title to
|
||||
whatever you choose) and then insert it into your workbook using the
|
||||
`addSheet()` method.
|
||||
|
||||
``` php
|
||||
// Create a new worksheet called "My Data"
|
||||
$myWorkSheet = new \PhpOffice\PhpSpreadsheet\Worksheet($spreadsheet, 'My Data');
|
||||
|
||||
// Attach the "My Data" worksheet as the first worksheet in the Spreadsheet object
|
||||
$spreadsheet->addSheet($myWorkSheet, 0);
|
||||
```
|
||||
|
||||
If you don't specify an index position as the second argument, then the
|
||||
new worksheet will be added after the last existing worksheet.
|
||||
|
||||
## Copying Worksheets
|
||||
|
||||
Sheets within the same workbook can be copied by creating a clone of the
|
||||
worksheet you wish to copy, and then using the `addSheet()` method to
|
||||
insert the clone into the workbook.
|
||||
|
||||
``` php
|
||||
$clonedWorksheet = clone $spreadsheet->getSheetByName('Worksheet 1');
|
||||
$clonedWorksheet->setTitle('Copy of Worksheet 1');
|
||||
$spreadsheet->addSheet($clonedWorksheet);
|
||||
```
|
||||
|
||||
You can also copy worksheets from one workbook to another, though this
|
||||
is more complex as PhpSpreadsheet also has to replicate the styling
|
||||
between the two workbooks. The `addExternalSheet()` method is provided for
|
||||
this purpose.
|
||||
|
||||
$clonedWorksheet = clone $spreadsheet1->getSheetByName('Worksheet 1');
|
||||
$spreadsheet->addExternalSheet($clonedWorksheet);
|
||||
|
||||
In both cases, it is the developer's responsibility to ensure that
|
||||
worksheet names are not duplicated. PhpSpreadsheet will throw an
|
||||
exception if you attempt to copy worksheets that will result in a
|
||||
duplicate name.
|
||||
|
||||
## Removing a Worksheet
|
||||
|
||||
You can delete a worksheet from a workbook, identified by its index
|
||||
position, using the `removeSheetByIndex()` method
|
||||
|
||||
``` php
|
||||
$sheetIndex = $spreadsheet->getIndex(
|
||||
$spreadsheet->getSheetByName('Worksheet 1')
|
||||
);
|
||||
$spreadsheet->removeSheetByIndex($sheetIndex);
|
||||
```
|
||||
|
||||
If the currently active worksheet is deleted, then the sheet at the
|
||||
previous index position will become the currently active sheet.
|
11
inc/vendor/phpoffice/phpspreadsheet/mkdocs.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
site_name: PhpSpreadsheet Documentation
|
||||
repo_url: https://github.com/PHPOffice/phpspreadsheet
|
||||
edit_uri: edit/develop/docs/
|
||||
|
||||
theme: readthedocs
|
||||
extra_css:
|
||||
- extra/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- extra/extra.js
|
||||
|
22
inc/vendor/phpoffice/phpspreadsheet/phpunit.xml.dist
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit bootstrap="./tests/bootstrap.php"
|
||||
backupGlobals="true"
|
||||
colors="true"
|
||||
syntaxCheck="true"
|
||||
disallowTestOutput="true">
|
||||
<php>
|
||||
<ini name="memory_limit" value="2048M"/>
|
||||
</php>
|
||||
<testsuite name="PhpSpreadsheet Unit Test Suite">
|
||||
<directory suffix="Test.php">./tests/PhpSpreadsheetTests</directory>
|
||||
</testsuite>
|
||||
<filter>
|
||||
<whitelist>
|
||||
<directory suffix=".php">./src</directory>
|
||||
<exclude>
|
||||
<directory>./src/PhpSpreadsheet/Shared/JAMA</directory>
|
||||
<directory>./src/PhpSpreadsheet/Writer/PDF</directory>
|
||||
</exclude>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
101
inc/vendor/phpoffice/phpspreadsheet/samples/Autofilter/10_Autofilter.php
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PhpSpreadsheet Test Document')
|
||||
->setSubject('PhpSpreadsheet Test Document')
|
||||
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
|
||||
->setKeywords('office PhpSpreadsheet php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Create the worksheet
|
||||
$helper->log('Add data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Year')
|
||||
->setCellValue('B1', 'Quarter')
|
||||
->setCellValue('C1', 'Country')
|
||||
->setCellValue('D1', 'Sales');
|
||||
|
||||
$dataArray = [
|
||||
['2010', 'Q1', 'United States', 790],
|
||||
['2010', 'Q2', 'United States', 730],
|
||||
['2010', 'Q3', 'United States', 860],
|
||||
['2010', 'Q4', 'United States', 850],
|
||||
['2011', 'Q1', 'United States', 800],
|
||||
['2011', 'Q2', 'United States', 700],
|
||||
['2011', 'Q3', 'United States', 900],
|
||||
['2011', 'Q4', 'United States', 950],
|
||||
['2010', 'Q1', 'Belgium', 380],
|
||||
['2010', 'Q2', 'Belgium', 390],
|
||||
['2010', 'Q3', 'Belgium', 420],
|
||||
['2010', 'Q4', 'Belgium', 460],
|
||||
['2011', 'Q1', 'Belgium', 400],
|
||||
['2011', 'Q2', 'Belgium', 350],
|
||||
['2011', 'Q3', 'Belgium', 450],
|
||||
['2011', 'Q4', 'Belgium', 500],
|
||||
['2010', 'Q1', 'UK', 690],
|
||||
['2010', 'Q2', 'UK', 610],
|
||||
['2010', 'Q3', 'UK', 620],
|
||||
['2010', 'Q4', 'UK', 600],
|
||||
['2011', 'Q1', 'UK', 720],
|
||||
['2011', 'Q2', 'UK', 650],
|
||||
['2011', 'Q3', 'UK', 580],
|
||||
['2011', 'Q4', 'UK', 510],
|
||||
['2010', 'Q1', 'France', 510],
|
||||
['2010', 'Q2', 'France', 490],
|
||||
['2010', 'Q3', 'France', 460],
|
||||
['2010', 'Q4', 'France', 590],
|
||||
['2011', 'Q1', 'France', 620],
|
||||
['2011', 'Q2', 'France', 650],
|
||||
['2011', 'Q3', 'France', 415],
|
||||
['2011', 'Q4', 'France', 570],
|
||||
['2010', 'Q1', 'Germany', 720],
|
||||
['2010', 'Q2', 'Germany', 680],
|
||||
['2010', 'Q3', 'Germany', 640],
|
||||
['2010', 'Q4', 'Germany', 660],
|
||||
['2011', 'Q1', 'Germany', 680],
|
||||
['2011', 'Q2', 'Germany', 620],
|
||||
['2011', 'Q3', 'Germany', 710],
|
||||
['2011', 'Q4', 'Germany', 690],
|
||||
['2010', 'Q1', 'Spain', 510],
|
||||
['2010', 'Q2', 'Spain', 490],
|
||||
['2010', 'Q3', 'Spain', 470],
|
||||
['2010', 'Q4', 'Spain', 420],
|
||||
['2011', 'Q1', 'Spain', 460],
|
||||
['2011', 'Q2', 'Spain', 390],
|
||||
['2011', 'Q3', 'Spain', 430],
|
||||
['2011', 'Q4', 'Spain', 415],
|
||||
['2010', 'Q1', 'Italy', 440],
|
||||
['2010', 'Q2', 'Italy', 410],
|
||||
['2010', 'Q3', 'Italy', 420],
|
||||
['2010', 'Q4', 'Italy', 450],
|
||||
['2011', 'Q1', 'Italy', 430],
|
||||
['2011', 'Q2', 'Italy', 370],
|
||||
['2011', 'Q3', 'Italy', 350],
|
||||
['2011', 'Q4', 'Italy', 335],
|
||||
];
|
||||
$spreadsheet->getActiveSheet()->fromArray($dataArray, null, 'A2');
|
||||
|
||||
// Set title row bold
|
||||
$helper->log('Set title row bold');
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);
|
||||
|
||||
// Set autofilter
|
||||
$helper->log('Set autofilter');
|
||||
// Always include the complete filter range!
|
||||
// Excel does support setting only the caption
|
||||
// row, but that's not a best practise...
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter($spreadsheet->getActiveSheet()->calculateWorksheetDimension());
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
156
inc/vendor/phpoffice/phpspreadsheet/samples/Autofilter/10_Autofilter_selection_1.php
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PhpSpreadsheet Test Document')
|
||||
->setSubject('PhpSpreadsheet Test Document')
|
||||
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
|
||||
->setKeywords('office PhpSpreadsheet php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Create the worksheet
|
||||
$helper->log('Add data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Financial Year')
|
||||
->setCellValue('B1', 'Financial Period')
|
||||
->setCellValue('C1', 'Country')
|
||||
->setCellValue('D1', 'Date')
|
||||
->setCellValue('E1', 'Sales Value')
|
||||
->setCellValue('F1', 'Expenditure');
|
||||
$startYear = $endYear = $currentYear = date('Y');
|
||||
--$startYear;
|
||||
++$endYear;
|
||||
|
||||
$years = range($startYear, $endYear);
|
||||
$periods = range(1, 12);
|
||||
$countries = [
|
||||
'United States',
|
||||
'UK',
|
||||
'France',
|
||||
'Germany',
|
||||
'Italy',
|
||||
'Spain',
|
||||
'Portugal',
|
||||
'Japan',
|
||||
];
|
||||
|
||||
$row = 2;
|
||||
foreach ($years as $year) {
|
||||
foreach ($periods as $period) {
|
||||
foreach ($countries as $country) {
|
||||
$endDays = date('t', mktime(0, 0, 0, $period, 1, $year));
|
||||
for ($i = 1; $i <= $endDays; ++$i) {
|
||||
$eDate = Date::formattedPHPToExcel(
|
||||
$year,
|
||||
$period,
|
||||
$i
|
||||
);
|
||||
$value = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
$salesValue = $invoiceValue = null;
|
||||
$incomeOrExpenditure = rand(-1, 1);
|
||||
if ($incomeOrExpenditure == -1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = null;
|
||||
} elseif ($incomeOrExpenditure == 1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
} else {
|
||||
$expenditure = null;
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
}
|
||||
$dataArray = [$year,
|
||||
$period,
|
||||
$country,
|
||||
$eDate,
|
||||
$income,
|
||||
$expenditure,
|
||||
];
|
||||
$spreadsheet->getActiveSheet()->fromArray($dataArray, null, 'A' . $row++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--$row;
|
||||
|
||||
// Set styling
|
||||
$helper->log('Set styling');
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true);
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(true);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(12.5);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(10.5);
|
||||
$spreadsheet->getActiveSheet()->getStyle('D2:D' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDD2);
|
||||
$spreadsheet->getActiveSheet()->getStyle('E2:F' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(14);
|
||||
$spreadsheet->getActiveSheet()->freezePane('A2');
|
||||
|
||||
// Set autofilter range
|
||||
$helper->log('Set autofilter range');
|
||||
// Always include the complete filter range!
|
||||
// Excel does support setting only the caption
|
||||
// row, but that's not a best practise...
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter($spreadsheet->getActiveSheet()->calculateWorksheetDimension());
|
||||
|
||||
// Set active filters
|
||||
$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
|
||||
$helper->log('Set active filters');
|
||||
// Filter the Country column on a filter value of countries beginning with the letter U (or Japan)
|
||||
// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter
|
||||
$autoFilter->getColumn('C')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'u*'
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
$autoFilter->getColumn('C')
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'japan'
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
// Filter the Date column on a filter value of the first day of every period of the current year
|
||||
// We us a dateGroup ruletype for this, although it is still a standard filter
|
||||
foreach ($periods as $period) {
|
||||
$endDate = date('t', mktime(0, 0, 0, $period, 1, $currentYear));
|
||||
|
||||
$autoFilter->getColumn('D')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
[
|
||||
'year' => $currentYear,
|
||||
'month' => $period,
|
||||
'day' => $endDate,
|
||||
]
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_DATEGROUP);
|
||||
}
|
||||
// Display only sales values that are blank
|
||||
// Standard filter, operator equals, and value of NULL
|
||||
$autoFilter->getColumn('E')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
''
|
||||
);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
148
inc/vendor/phpoffice/phpspreadsheet/samples/Autofilter/10_Autofilter_selection_2.php
vendored
Normal file
@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PhpSpreadsheet Test Document')
|
||||
->setSubject('PhpSpreadsheet Test Document')
|
||||
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
|
||||
->setKeywords('office PhpSpreadsheet php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Create the worksheet
|
||||
$helper->log('Add data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Financial Year')
|
||||
->setCellValue('B1', 'Financial Period')
|
||||
->setCellValue('C1', 'Country')
|
||||
->setCellValue('D1', 'Date')
|
||||
->setCellValue('E1', 'Sales Value')
|
||||
->setCellValue('F1', 'Expenditure');
|
||||
$startYear = $endYear = $currentYear = date('Y');
|
||||
--$startYear;
|
||||
++$endYear;
|
||||
|
||||
$years = range($startYear, $endYear);
|
||||
$periods = range(1, 12);
|
||||
$countries = [
|
||||
'United States',
|
||||
'UK',
|
||||
'France',
|
||||
'Germany',
|
||||
'Italy',
|
||||
'Spain',
|
||||
'Portugal',
|
||||
'Japan',
|
||||
];
|
||||
|
||||
$row = 2;
|
||||
foreach ($years as $year) {
|
||||
foreach ($periods as $period) {
|
||||
foreach ($countries as $country) {
|
||||
$endDays = date('t', mktime(0, 0, 0, $period, 1, $year));
|
||||
for ($i = 1; $i <= $endDays; ++$i) {
|
||||
$eDate = Date::formattedPHPToExcel(
|
||||
$year,
|
||||
$period,
|
||||
$i
|
||||
);
|
||||
$value = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
$salesValue = $invoiceValue = null;
|
||||
$incomeOrExpenditure = rand(-1, 1);
|
||||
if ($incomeOrExpenditure == -1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = null;
|
||||
} elseif ($incomeOrExpenditure == 1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
} else {
|
||||
$expenditure = null;
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
}
|
||||
$dataArray = [$year,
|
||||
$period,
|
||||
$country,
|
||||
$eDate,
|
||||
$income,
|
||||
$expenditure,
|
||||
];
|
||||
$spreadsheet->getActiveSheet()->fromArray($dataArray, null, 'A' . $row++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--$row;
|
||||
|
||||
// Set styling
|
||||
$helper->log('Set styling');
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true);
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(true);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(12.5);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(10.5);
|
||||
$spreadsheet->getActiveSheet()->getStyle('D2:D' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDD2);
|
||||
$spreadsheet->getActiveSheet()->getStyle('E2:F' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(14);
|
||||
$spreadsheet->getActiveSheet()->freezePane('A2');
|
||||
|
||||
// Set autofilter range
|
||||
$helper->log('Set autofilter range');
|
||||
// Always include the complete filter range!
|
||||
// Excel does support setting only the caption
|
||||
// row, but that's not a best practise...
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter($spreadsheet->getActiveSheet()->calculateWorksheetDimension());
|
||||
|
||||
// Set active filters
|
||||
$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
|
||||
$helper->log('Set active filters');
|
||||
// Filter the Country column on a filter value of Germany
|
||||
// As it's just a simple value filter, we can use FILTERTYPE_FILTER
|
||||
$autoFilter->getColumn('C')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'Germany'
|
||||
);
|
||||
// Filter the Date column on a filter value of the year to date
|
||||
$autoFilter->getColumn('D')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
null,
|
||||
Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER);
|
||||
// Display only sales values that are between 400 and 600
|
||||
$autoFilter->getColumn('E')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL,
|
||||
400
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
$autoFilter->getColumn('E')
|
||||
->setJoin(Column::AUTOFILTER_COLUMN_JOIN_AND)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL,
|
||||
600
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
170
inc/vendor/phpoffice/phpspreadsheet/samples/Autofilter/10_Autofilter_selection_display.php
vendored
Normal file
@ -0,0 +1,170 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column\Rule;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PhpSpreadsheet Test Document')
|
||||
->setSubject('PhpSpreadsheet Test Document')
|
||||
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
|
||||
->setKeywords('office PhpSpreadsheet php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Create the worksheet
|
||||
$helper->log('Add data');
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Financial Year')
|
||||
->setCellValue('B1', 'Financial Period')
|
||||
->setCellValue('C1', 'Country')
|
||||
->setCellValue('D1', 'Date')
|
||||
->setCellValue('E1', 'Sales Value')
|
||||
->setCellValue('F1', 'Expenditure');
|
||||
$startYear = $endYear = $currentYear = date('Y');
|
||||
--$startYear;
|
||||
++$endYear;
|
||||
|
||||
$years = range($startYear, $endYear);
|
||||
$periods = range(1, 12);
|
||||
$countries = [
|
||||
'United States',
|
||||
'UK',
|
||||
'France',
|
||||
'Germany',
|
||||
'Italy',
|
||||
'Spain',
|
||||
'Portugal',
|
||||
'Japan',
|
||||
];
|
||||
|
||||
$row = 2;
|
||||
foreach ($years as $year) {
|
||||
foreach ($periods as $period) {
|
||||
foreach ($countries as $country) {
|
||||
$endDays = date('t', mktime(0, 0, 0, $period, 1, $year));
|
||||
for ($i = 1; $i <= $endDays; ++$i) {
|
||||
$eDate = Date::formattedPHPToExcel(
|
||||
$year,
|
||||
$period,
|
||||
$i
|
||||
);
|
||||
$value = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
$salesValue = $invoiceValue = null;
|
||||
$incomeOrExpenditure = rand(-1, 1);
|
||||
if ($incomeOrExpenditure == -1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = null;
|
||||
} elseif ($incomeOrExpenditure == 1) {
|
||||
$expenditure = rand(-500, -1000) * (1 + rand(-0.25, +0.25));
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
} else {
|
||||
$expenditure = null;
|
||||
$income = rand(500, 1000) * (1 + rand(-0.25, +0.25));
|
||||
}
|
||||
$dataArray = [$year,
|
||||
$period,
|
||||
$country,
|
||||
$eDate,
|
||||
$income,
|
||||
$expenditure,
|
||||
];
|
||||
$spreadsheet->getActiveSheet()->fromArray($dataArray, null, 'A' . $row++);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--$row;
|
||||
|
||||
// Set styling
|
||||
$helper->log('Set styling');
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true);
|
||||
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(true);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(12.5);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(10.5);
|
||||
$spreadsheet->getActiveSheet()->getStyle('D2:D' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDD2);
|
||||
$spreadsheet->getActiveSheet()->getStyle('E2:F' . $row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(14);
|
||||
$spreadsheet->getActiveSheet()->freezePane('A2');
|
||||
|
||||
// Set autofilter range
|
||||
$helper->log('Set autofilter range');
|
||||
// Always include the complete filter range!
|
||||
// Excel does support setting only the caption
|
||||
// row, but that's not a best practise...
|
||||
$spreadsheet->getActiveSheet()->setAutoFilter($spreadsheet->getActiveSheet()->calculateWorksheetDimension());
|
||||
|
||||
// Set active filters
|
||||
$autoFilter = $spreadsheet->getActiveSheet()->getAutoFilter();
|
||||
$helper->log('Set active filters');
|
||||
// Filter the Country column on a filter value of countries beginning with the letter U (or Japan)
|
||||
// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter
|
||||
$autoFilter->getColumn('C')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'u*'
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
$autoFilter->getColumn('C')
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
'japan'
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER);
|
||||
// Filter the Date column on a filter value of the first day of every period of the current year
|
||||
// We us a dateGroup ruletype for this, although it is still a standard filter
|
||||
foreach ($periods as $period) {
|
||||
$endDate = date('t', mktime(0, 0, 0, $period, 1, $currentYear));
|
||||
|
||||
$autoFilter->getColumn('D')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
[
|
||||
'year' => $currentYear,
|
||||
'month' => $period,
|
||||
'day' => $endDate,
|
||||
]
|
||||
)
|
||||
->setRuleType(Rule::AUTOFILTER_RULETYPE_DATEGROUP);
|
||||
}
|
||||
// Display only sales values that are blank
|
||||
// Standard filter, operator equals, and value of NULL
|
||||
$autoFilter->getColumn('E')
|
||||
->setFilterType(Column::AUTOFILTER_FILTERTYPE_FILTER)
|
||||
->createRule()
|
||||
->setRule(
|
||||
Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
|
||||
''
|
||||
);
|
||||
|
||||
// Execute filtering
|
||||
$helper->log('Execute filtering');
|
||||
$autoFilter->showHideRows();
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
// Display Results of filtering
|
||||
$helper->log('Display filtered rows');
|
||||
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {
|
||||
if ($spreadsheet->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) {
|
||||
$helper->log(' Row number - ' . $row->getRowIndex());
|
||||
$helper->log($spreadsheet->getActiveSheet()->getCell('C' . $row->getRowIndex())->getValue());
|
||||
$helper->log($spreadsheet->getActiveSheet()->getCell('D' . $row->getRowIndex())->getFormattedValue());
|
||||
}
|
||||
}
|
65
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple.php
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()
|
||||
->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PhpSpreadsheet Test Document')
|
||||
->setSubject('PhpSpreadsheet Test Document')
|
||||
->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.')
|
||||
->setKeywords('office PhpSpreadsheet php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A1', 'Hello')
|
||||
->setCellValue('B2', 'world!')
|
||||
->setCellValue('C1', 'Hello')
|
||||
->setCellValue('D2', 'world!');
|
||||
|
||||
// Miscellaneous glyphs, UTF-8
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', 'Miscellaneous glyphs')
|
||||
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A8', "Hello\nWorld");
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getRowDimension(8)
|
||||
->setRowHeight(-1);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('A8')
|
||||
->getAlignment()
|
||||
->setWrapText(true);
|
||||
|
||||
$value = "-ValueA\n-Value B\n-Value C";
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A10', $value);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getRowDimension(10)
|
||||
->setRowHeight(-1);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('A10')
|
||||
->getAlignment()
|
||||
->setWrapText(true);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('A10')
|
||||
->setQuotePrefix(true);
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setTitle('Simple');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
61
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple_download_ods.php
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Sample;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require_once __DIR__ . '/../../src/Bootstrap.php';
|
||||
|
||||
$helper = new Sample();
|
||||
if ($helper->isCli()) {
|
||||
$helper->log('This example should only be run from a Web Browser' . PHP_EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A1', 'Hello')
|
||||
->setCellValue('B2', 'world!')
|
||||
->setCellValue('C1', 'Hello')
|
||||
->setCellValue('D2', 'world!');
|
||||
|
||||
// Miscellaneous glyphs, UTF-8
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', 'Miscellaneous glyphs')
|
||||
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
|
||||
|
||||
// Rename worksheet
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
// Redirect output to a client’s web browser (Ods)
|
||||
header('Content-Type: application/vnd.oasis.opendocument.spreadsheet');
|
||||
header('Content-Disposition: attachment;filename="01simple.ods"');
|
||||
header('Cache-Control: max-age=0');
|
||||
// If you're serving to IE 9, then the following may be needed
|
||||
header('Cache-Control: max-age=1');
|
||||
|
||||
// If you're serving to IE over SSL, then the following may be needed
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
|
||||
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
|
||||
header('Pragma: public'); // HTTP/1.0
|
||||
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Ods');
|
||||
$writer->save('php://output');
|
||||
exit;
|
56
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple_download_pdf.php
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Sample;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require_once __DIR__ . '/../../src/Bootstrap.php';
|
||||
|
||||
$helper = new Sample();
|
||||
if ($helper->isCli()) {
|
||||
$helper->log('This example should only be run from a Web Browser' . PHP_EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('PDF Test Document')
|
||||
->setSubject('PDF Test Document')
|
||||
->setDescription('Test document for PDF, generated using PHP classes.')
|
||||
->setKeywords('pdf php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A1', 'Hello')
|
||||
->setCellValue('B2', 'world!')
|
||||
->setCellValue('C1', 'Hello')
|
||||
->setCellValue('D2', 'world!');
|
||||
|
||||
// Miscellaneous glyphs, UTF-8
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', 'Miscellaneous glyphs')
|
||||
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
|
||||
|
||||
// Rename worksheet
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
$spreadsheet->getActiveSheet()->setShowGridLines(false);
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
IOFactory::registerWriter('Pdf', \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf::class);
|
||||
|
||||
// Redirect output to a client’s web browser (PDF)
|
||||
header('Content-Type: application/pdf');
|
||||
header('Content-Disposition: attachment;filename="01simple.pdf"');
|
||||
header('Cache-Control: max-age=0');
|
||||
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Pdf');
|
||||
$writer->save('php://output');
|
||||
exit;
|
61
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple_download_xls.php
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Sample;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require_once __DIR__ . '/../../src/Bootstrap.php';
|
||||
|
||||
$helper = new Sample();
|
||||
if ($helper->isCli()) {
|
||||
$helper->log('This example should only be run from a Web Browser' . PHP_EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A1', 'Hello')
|
||||
->setCellValue('B2', 'world!')
|
||||
->setCellValue('C1', 'Hello')
|
||||
->setCellValue('D2', 'world!');
|
||||
|
||||
// Miscellaneous glyphs, UTF-8
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', 'Miscellaneous glyphs')
|
||||
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
|
||||
|
||||
// Rename worksheet
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
// Redirect output to a client’s web browser (Xls)
|
||||
header('Content-Type: application/vnd.ms-excel');
|
||||
header('Content-Disposition: attachment;filename="01simple.xls"');
|
||||
header('Cache-Control: max-age=0');
|
||||
// If you're serving to IE 9, then the following may be needed
|
||||
header('Cache-Control: max-age=1');
|
||||
|
||||
// If you're serving to IE over SSL, then the following may be needed
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
|
||||
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
|
||||
header('Pragma: public'); // HTTP/1.0
|
||||
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
|
||||
$writer->save('php://output');
|
||||
exit;
|
60
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple_download_xlsx.php
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Helper\Sample;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require_once __DIR__ . '/../../src/Bootstrap.php';
|
||||
|
||||
$helper = new Sample();
|
||||
if ($helper->isCli()) {
|
||||
$helper->log('This example should only be run from a Web Browser' . PHP_EOL);
|
||||
|
||||
return;
|
||||
}
|
||||
// Create new Spreadsheet object
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A1', 'Hello')
|
||||
->setCellValue('B2', 'world!')
|
||||
->setCellValue('C1', 'Hello')
|
||||
->setCellValue('D2', 'world!');
|
||||
|
||||
// Miscellaneous glyphs, UTF-8
|
||||
$spreadsheet->setActiveSheetIndex(0)
|
||||
->setCellValue('A4', 'Miscellaneous glyphs')
|
||||
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
|
||||
|
||||
// Rename worksheet
|
||||
$spreadsheet->getActiveSheet()->setTitle('Simple');
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
// Redirect output to a client’s web browser (Xlsx)
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
header('Content-Disposition: attachment;filename="01simple.xlsx"');
|
||||
header('Cache-Control: max-age=0');
|
||||
// If you're serving to IE 9, then the following may be needed
|
||||
header('Cache-Control: max-age=1');
|
||||
|
||||
// If you're serving to IE over SSL, then the following may be needed
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
|
||||
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
|
||||
header('Pragma: public'); // HTTP/1.0
|
||||
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
||||
$writer->save('php://output');
|
||||
exit;
|
162
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/02_Types.php
vendored
Normal file
@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\RichText\RichText;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Date;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Color;
|
||||
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()
|
||||
->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Set default font
|
||||
$helper->log('Set default font');
|
||||
$spreadsheet->getDefaultStyle()
|
||||
->getFont()
|
||||
->setName('Arial')
|
||||
->setSize(10);
|
||||
|
||||
// Add some data, resembling some different data types
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A1', 'String')
|
||||
->setCellValue('B1', 'Simple')
|
||||
->setCellValue('C1', 'PhpSpreadsheet');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A2', 'String')
|
||||
->setCellValue('B2', 'Symbols')
|
||||
->setCellValue('C2', '!+&=()~§±æþ');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A3', 'String')
|
||||
->setCellValue('B3', 'UTF-8')
|
||||
->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A4', 'Number')
|
||||
->setCellValue('B4', 'Integer')
|
||||
->setCellValue('C4', 12);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A5', 'Number')
|
||||
->setCellValue('B5', 'Float')
|
||||
->setCellValue('C5', 34.56);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A6', 'Number')
|
||||
->setCellValue('B6', 'Negative')
|
||||
->setCellValue('C6', -7.89);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A7', 'Boolean')
|
||||
->setCellValue('B7', 'True')
|
||||
->setCellValue('C7', true);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A8', 'Boolean')
|
||||
->setCellValue('B8', 'False')
|
||||
->setCellValue('C8', false);
|
||||
|
||||
$dateTimeNow = time();
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A9', 'Date/Time')
|
||||
->setCellValue('B9', 'Date')
|
||||
->setCellValue('C9', Date::PHPToExcel($dateTimeNow));
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('C9')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(NumberFormat::FORMAT_DATE_YYYYMMDD2);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A10', 'Date/Time')
|
||||
->setCellValue('B10', 'Time')
|
||||
->setCellValue('C10', Date::PHPToExcel($dateTimeNow));
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('C10')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(NumberFormat::FORMAT_DATE_TIME4);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A11', 'Date/Time')
|
||||
->setCellValue('B11', 'Date and Time')
|
||||
->setCellValue('C11', Date::PHPToExcel($dateTimeNow));
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('C11')
|
||||
->getNumberFormat()
|
||||
->setFormatCode(NumberFormat::FORMAT_DATE_DATETIME);
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A12', 'NULL')
|
||||
->setCellValue('C12', null);
|
||||
|
||||
$richText = new RichText();
|
||||
$richText->createText('你好 ');
|
||||
|
||||
$payable = $richText->createTextRun('你 好 吗?');
|
||||
$payable->getFont()->setBold(true);
|
||||
$payable->getFont()->setItalic(true);
|
||||
$payable->getFont()->setColor(new Color(Color::COLOR_DARKGREEN));
|
||||
|
||||
$richText->createText(', unless specified otherwise on the invoice.');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A13', 'Rich Text')
|
||||
->setCellValue('C13', $richText);
|
||||
|
||||
$richText2 = new RichText();
|
||||
$richText2->createText("black text\n");
|
||||
|
||||
$red = $richText2->createTextRun('red text');
|
||||
$red->getFont()->setColor(new Color(Color::COLOR_RED));
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getCell('C14')
|
||||
->setValue($richText2);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getStyle('C14')
|
||||
->getAlignment()->setWrapText(true);
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A17', 'Hyperlink');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('C17', 'PhpSpreadsheet Web Site');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getCell('C17')
|
||||
->getHyperlink()
|
||||
->setUrl('https://github.com/PHPOffice/PhpSpreadsheet')
|
||||
->setTooltip('Navigate to PhpSpreadsheet website');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('C18', '=HYPERLINK("mailto:abc@def.com","abc@def.com")');
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getColumnDimension('B')
|
||||
->setAutoSize(true);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getColumnDimension('C')
|
||||
->setAutoSize(true);
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Datatypes');
|
||||
|
||||
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
||||
$spreadsheet->setActiveSheetIndex(0);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
81
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/03_Formulas.php
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data, we will use some formulas here
|
||||
$helper->log('Add some data');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A5', 'Sum:');
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B1', 'Range #1')
|
||||
->setCellValue('B2', 3)
|
||||
->setCellValue('B3', 7)
|
||||
->setCellValue('B4', 13)
|
||||
->setCellValue('B5', '=SUM(B2:B4)');
|
||||
$helper->log('Sum of Range #1 is ' . $spreadsheet->getActiveSheet()->getCell('B5')->getCalculatedValue());
|
||||
|
||||
$spreadsheet->getActiveSheet()->setCellValue('C1', 'Range #2')
|
||||
->setCellValue('C2', 5)
|
||||
->setCellValue('C3', 11)
|
||||
->setCellValue('C4', 17)
|
||||
->setCellValue('C5', '=SUM(C2:C4)');
|
||||
$helper->log('Sum of Range #2 is ' . $spreadsheet->getActiveSheet()->getCell('C5')->getCalculatedValue());
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A7', 'Total of both ranges:');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('B7', '=SUM(B5:C5)');
|
||||
$helper->log('Sum of both Ranges is ' . $spreadsheet->getActiveSheet()->getCell('B7')->getCalculatedValue());
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A8', 'Minimum of both ranges:');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('B8', '=MIN(B2:C4)');
|
||||
$helper->log('Minimum value in either Range is ' . $spreadsheet->getActiveSheet()->getCell('B8')->getCalculatedValue());
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A9', 'Maximum of both ranges:');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('B9', '=MAX(B2:C4)');
|
||||
$helper->log('Maximum value in either Range is ' . $spreadsheet->getActiveSheet()->getCell('B9')->getCalculatedValue());
|
||||
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('A10', 'Average of both ranges:');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setCellValue('B10', '=AVERAGE(B2:C4)');
|
||||
$helper->log('Average value of both Ranges is ' . $spreadsheet->getActiveSheet()->getCell('B10')->getCalculatedValue());
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getColumnDimension('A')
|
||||
->setAutoSize(true);
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->setTitle('Formulas');
|
||||
|
||||
//
|
||||
// If we set Pre Calculated Formulas to true then PhpSpreadsheet will calculate all formulae in the
|
||||
// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae
|
||||
// using functions or features (such as array formulae) that aren't yet supported by the calculation engine
|
||||
// If the value is false (the default) for the Xlsx Writer, then MS Excel (or the application used to
|
||||
// open the file) will need to recalculate values itself to guarantee that the correct results are available.
|
||||
//
|
||||
//$writer->setPreCalculateFormulas(true);
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
64
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/04_Printing.php
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooter;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\HeaderFooterDrawing;
|
||||
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create new Spreadsheet object
|
||||
$helper->log('Create new Spreadsheet object');
|
||||
$spreadsheet = new Spreadsheet();
|
||||
|
||||
// Set document properties
|
||||
$helper->log('Set document properties');
|
||||
$spreadsheet->getProperties()->setCreator('Maarten Balliauw')
|
||||
->setLastModifiedBy('Maarten Balliauw')
|
||||
->setTitle('Office 2007 XLSX Test Document')
|
||||
->setSubject('Office 2007 XLSX Test Document')
|
||||
->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
|
||||
->setKeywords('office 2007 openxml php')
|
||||
->setCategory('Test result file');
|
||||
|
||||
// Add some data, we will use printing features
|
||||
$helper->log('Add some data');
|
||||
for ($i = 1; $i < 200; ++$i) {
|
||||
$spreadsheet->getActiveSheet()->setCellValue('A' . $i, $i);
|
||||
$spreadsheet->getActiveSheet()->setCellValue('B' . $i, 'Test value');
|
||||
}
|
||||
|
||||
// Set header and footer. When no different headers for odd/even are used, odd header is assumed.
|
||||
$helper->log('Set header/footer');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getHeaderFooter()
|
||||
->setOddHeader('&L&G&C&HPlease treat this document as confidential!');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getHeaderFooter()
|
||||
->setOddFooter('&L&B' . $spreadsheet->getProperties()->getTitle() . '&RPage &P of &N');
|
||||
|
||||
// Add a drawing to the header
|
||||
$helper->log('Add a drawing to the header');
|
||||
$drawing = new HeaderFooterDrawing();
|
||||
$drawing->setName('PhpSpreadsheet logo');
|
||||
$drawing->setPath(__DIR__ . '/../images/PhpSpreadsheet_logo.png');
|
||||
$drawing->setHeight(36);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getHeaderFooter()
|
||||
->addImage($drawing, HeaderFooter::IMAGE_HEADER_LEFT);
|
||||
|
||||
// Set page orientation and size
|
||||
$helper->log('Set page orientation and size');
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getPageSetup()
|
||||
->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
|
||||
$spreadsheet->getActiveSheet()
|
||||
->getPageSetup()
|
||||
->setPaperSize(PageSetup::PAPERSIZE_A4);
|
||||
|
||||
// Rename worksheet
|
||||
$helper->log('Rename worksheet');
|
||||
$spreadsheet->getActiveSheet()->setTitle('Printing');
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
7
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/05_Feature_demo.php
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
$spreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
8
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/06_Largescale.php
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
$spreadsheet = require __DIR__ . '/../templates/largeSpreadsheet.php';
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|
19
inc/vendor/phpoffice/phpspreadsheet/samples/Basic/07_Reader.php
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
|
||||
require __DIR__ . '/../Header.php';
|
||||
|
||||
// Create temporary file that will be read
|
||||
$sampleSpreadsheet = require __DIR__ . '/../templates/sampleSpreadsheet.php';
|
||||
$filename = $helper->getTemporaryFilename();
|
||||
$writer = new Xlsx($sampleSpreadsheet);
|
||||
$writer->save($filename);
|
||||
|
||||
$callStartTime = microtime(true);
|
||||
$spreadsheet = IOFactory::load($filename);
|
||||
$helper->logRead('Xlsx', $filename, $callStartTime);
|
||||
|
||||
// Save
|
||||
$helper->write($spreadsheet, __FILE__);
|