diff options
author | h-hishida <h-hishida@quartetcom.co.jp> | 2015-04-28 09:45:00 +0900 |
---|---|---|
committer | h-hishida <h-hishida@quartetcom.co.jp> | 2015-04-28 09:45:00 +0900 |
commit | 373ae12ca5db9837f84fef44f3f7077e766aca08 (patch) | |
tree | c515f2cccceaa886282ac40f89785da072a3627e | |
download | PHPExcelFixer.StyleFixer-373ae12ca5db9837f84fef44f3f7077e766aca08.zip PHPExcelFixer.StyleFixer-373ae12ca5db9837f84fef44f3f7077e766aca08.tar.gz PHPExcelFixer.StyleFixer-373ae12ca5db9837f84fef44f3f7077e766aca08.tar.bz2 |
initial commit
40 files changed, 1898 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da98356 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +nbproject +._* +.~lock.* +.buildpath +.DS_Store +.idea +.project +.settings +cache.properties +build +vendor/ +composer.phar @@ -0,0 +1,20 @@ +<?php +$config = Symfony\CS\Config\Config::create(); +$config->level(null); +$config->fixers( + array( + 'indentation', + 'linefeed', + 'trailing_spaces', + 'short_tag', + 'visibility', + 'php_closing_tag', + 'braces', + 'function_declaration', + 'psr0', + 'elseif', + 'eof_ending', + 'unused_use', + ) +); +return $config; diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..ef48a65 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: php + +php: + - 5.4 + - 5.5 + - 5.6 + - hhvm + +script: + - composer install --prefer-source + - phpunit --coverage-text --coverage-clover=coverage.clover + +after_script: + - wget https://scrutinizer-ci.com/ocular.phar + - php ocular.phar code-coverage:upload --format=php-clover coverage.clover diff --git a/Licence.txt b/Licence.txt new file mode 100644 index 0000000..983f17b --- /dev/null +++ b/Licence.txt @@ -0,0 +1,24 @@ +Copyright (c) 2015, Hiromi Hishida +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the <organization> nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f658d3 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# PHPExcel.StyleFixer + +Fixes cell styles broken through [PHPExcel](https://github.com/phpoffice/phpexcel) read & write process. + diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..24a53ea --- /dev/null +++ b/build.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project default="build"> + <property name="composer.path" value="${basedir}/composer.phar" /> + <available property="composer.exists" file="${composer.path}" /> + + <target name="build" depends="require, prepare, test, report"/> + <target name="build-parallel" depends="prepare,lint,tools-parallel,phpunit,phpcb"/> + <target name="test" depends="lint,phpunit"/> + <target name="report" depends="phploc,pdepend,phpmd-ci,phpcs-ci,phpcpd,phpcb,apigen"/> + + <target name="require" depends="composer" description="Install QA tools"> + <exec executable="php"> + <arg value="composer.phar" /> + <arg value="global" /> + <arg value="require" /> + <arg value="covex-nn/phpcb:*" /> + <arg value="fabpot/php-cs-fixer:*" /> + <arg value="apigen/apigen:~4.0@dev" /> + <arg value="phpmd/phpmd:dev-master" /> + <arg value="phpunit/phpunit:*" /> + <arg value="squizlabs/php_codesniffer:*" /> + <arg value="sebastian/phpcpd:*" /> + <arg value="mayflower/php-codebrowser:*" /> + <arg value="sensiolabs/security-checker:*" /> + <arg value="phploc/phploc:*" /> + </exec> + </target> + + <target name="tools-parallel" description="Run tools in parallel"> + <parallel threadCount="2"> + <sequential> + <antcall target="pdepend"/> + <antcall target="phpmd-ci"/> + </sequential> + <antcall target="phpcpd"/> + <antcall target="phpcs-ci"/> + <antcall target="phploc"/> + </parallel> + </target> + + <target name="clean" description="Cleanup build artifacts"> + <delete dir="${basedir}/build/api"/> + <delete dir="${basedir}/build/code-browser"/> + <delete dir="${basedir}/build/coverage"/> + <delete dir="${basedir}/build/logs"/> + <delete dir="${basedir}/build/pdepend"/> + </target> + + <target name="prepare" depends="clean, vendor" description="Prepare for build"> + <mkdir dir="${basedir}/build/api"/> + <mkdir dir="${basedir}/build/docblox"/> + <mkdir dir="${basedir}/build/code-browser"/> + <mkdir dir="${basedir}/build/coverage"/> + <mkdir dir="${basedir}/build/logs"/> + <mkdir dir="${basedir}/build/pdepend"/> + </target> + + <target name="vendor" description="Load composer repositories" depends="composer-update"> + <exec executable="${composer.path}" failonerror="true"> + <arg value="install" /> + </exec> + </target> + + <target name="composer-update" description="Load composer repositories" depends="composer"> + <exec executable="${composer.path}" failonerror="true"> + <arg value="self-update" /> + </exec> + </target> + + <target name="composer" description="Download composer" unless="composer.exists"> + <get src="http://getcomposer.org/composer.phar" dest="${composer.path}" /> + <chmod file="${composer.path}" perm="775" /> + </target> + + <target name="lint" description="Perform syntax check of sourcecode files"> + <apply executable="php" failonerror="true"> + <arg value="-l" /> + + <fileset dir="${basedir}/src"> + <include name="**/*.php" /> + <modified /> + </fileset> + + <fileset dir="${basedir}/tests"> + <include name="**/*.php" /> + <modified /> + </fileset> + </apply> + </target> + + <target name="phploc" description="Measure project size using PHPLOC"> + <exec executable="phploc"> + <arg value="--log-csv" /> + <arg value="${basedir}/build/logs/phploc.csv" /> + <arg path="${basedir}/src" /> + </exec> + </target> + + <target name="pdepend" description="Calculate software metrics using PHP_Depend"> + <exec executable="pdepend"> + <arg value="--jdepend-xml=${basedir}/build/logs/jdepend.xml" /> + <arg value="--jdepend-chart=${basedir}/build/pdepend/dependencies.svg" /> + <arg value="--overview-pyramid=${basedir}/build/pdepend/overview-pyramid.svg" /> + <arg path="${basedir}/src" /> + </exec> + </target> + + <target name="phpmd" + description="Perform project mess detection using PHPMD and print human readable output. Intended for usage on the command line before committing."> + <exec executable="phpmd"> + <arg path="${basedir}/src" /> + <arg value="text" /> + <arg value="${basedir}/phpmd.xml" /> + </exec> + </target> + + <target name="phpmd-ci" description="Perform project mess detection using PHPMD creating a log file for the continuous integration server"> + <exec executable="phpmd"> + <arg path="${basedir}/src" /> + <arg value="xml" /> + <arg value="${basedir}/phpmd.xml" /> + <arg value="--reportfile" /> + <arg value="${basedir}/build/logs/pmd.xml" /> + </exec> + </target> + + <target name="phpcs" + description="Find coding standard violations using PHP_CodeSniffer and print human readable output. Intended for usage on the command line before committing."> + <exec executable="phpcs"> + <arg value="-s" /> + <arg value="--standard=${basedir}/phpcs.xml" /> + <arg path="${basedir}/src" /> + </exec> + </target> + + <target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer creating a log file for the continuous integration server"> + <exec executable="phpcs" output="/dev/null"> + <arg value="--report=checkstyle" /> + <arg value="--report-file=${basedir}/build/logs/checkstyle.xml" /> + <arg value="--standard=${basedir}/phpcs.xml" /> + <arg path="${basedir}/src" /> + </exec> + </target> + + <target name="phpcpd" description="Find duplicate code using PHPCPD"> + <exec executable="phpcpd"> + <arg value="--log-pmd" /> + <arg value="${basedir}/build/logs/pmd-cpd.xml" /> + <arg path="${basedir}/src" /> + </exec> + </target> + + <target name="phpunit" description="Run unit tests with PHPUnit"> + <exec executable="phpunit" failonerror="true"/> + </target> + + <target name="phpcb" description="Aggregate tool output with PHP_CodeBrowser"> + <exec executable="phpcb"> + <arg value="--log" /> + <arg path="${basedir}/build/logs" /> + <arg value="--source" /> + <arg path="${basedir}/src" /> + <arg value="--output" /> + <arg path="${basedir}/build/code-browser" /> + </exec> + </target> + + <target name="apigen" description="Generate API documentation using ApiGen"> + <exec executable="apigen"> + <arg line="generate -s src -d ${basedir}/build/api" /> + </exec> + </target> + +</project> diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9780eb1 --- /dev/null +++ b/composer.json @@ -0,0 +1,28 @@ +{ + "name": "phpexcel/stylefixer", + "description":" ", + "keywords":[ + ], + "license": "BSD-3-Clause", + "autoload":{ + "psr-4":{ + "PHPExcel\\StyleFixer\\": "src/" + } + }, + "autoload-dev":{ + "psr-4":{ + "PHPExcel\\StyleFixer\\": "tests/", + "PHPExcel\\StyleFixer\\": "tests/Fake" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "extra": { + "branch-alias": { + "dev-develop": "0.1.x-dev" + } + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..6434e31 --- /dev/null +++ b/composer.lock @@ -0,0 +1,436 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "dcacf7bfdb465305180f799aba27659a", + "packages": [], + "packages-dev": [ + { + "name": "phpunit/php-code-coverage", + "version": "1.2.18", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": ">=1.3.0@stable", + "phpunit/php-text-template": ">=1.2.0@stable", + "phpunit/php-token-stream": ">=1.1.3,<1.3.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*@dev" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2014-09-02 10:13:14" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2015-04-02 05:19:05" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2014-01-30 17:20:04" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2013-08-02 07:42:54" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2014-03-03 05:10:30" + }, + { + "name": "phpunit/phpunit", + "version": "3.7.38", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/38709dc22d519a3d1be46849868aa2ddf822bcf6", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpunit/php-code-coverage": "~1.2", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.1", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~1.2", + "symfony/yaml": "~2.0" + }, + "require-dev": { + "pear-pear.php.net/pear": "1.9.4" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "composer/bin/phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPUnit/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "", + "../../symfony/yaml/" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "http://www.phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2014-10-17 09:04:17" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-text-template": ">=1.1.1@stable" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHPUnit/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2013-01-13 10:24:48" + }, + { + "name": "symfony/yaml", + "version": "v2.6.6", + "target-dir": "Symfony/Component/Yaml", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "174f009ed36379a801109955fc5a71a49fe62dd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/174f009ed36379a801109955fc5a71a49fe62dd4", + "reference": "174f009ed36379a801109955fc5a71a49fe62dd4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Yaml Component", + "homepage": "http://symfony.com", + "time": "2015-03-30 15:54:10" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100755 index 0000000..76dc14b --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<ruleset> + <!-- 2. General --> + <rule ref="Generic.NamingConventions.UpperCaseConstantName"/> + <rule ref="Generic.CodeAnalysis.UnusedFunctionParameter"/> + <rule ref="Generic.Strings.UnnecessaryStringConcat"/> + <!-- Include the whole PSR-2 standard --> + <rule ref="PSR2"> + <exclude name="Generic.Files.LineLength"/> + </rule> + <rule ref="PEAR.Commenting.FunctionComment"> + <exclude name="PEAR.Commenting.FunctionComment.MissingReturn"/> + <exclude name="PEAR.Commenting.FunctionComment.MissingParamComment"/> + <exclude name="PEAR.Commenting.FunctionComment.SpacingBeforeTags"/> + <exclude name="PEAR.Commenting.FunctionComment.MissingParamTag"/> + <exclude name="PEAR.Commenting.FunctionComment.Missing"/> + <exclude name="PEAR.Commenting.FunctionComment.ParameterCommentsNotAligned"/> + </rule> +</ruleset> diff --git a/phpmd.xml b/phpmd.xml new file mode 100644 index 0000000..0412e29 --- /dev/null +++ b/phpmd.xml @@ -0,0 +1,40 @@ +<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" + xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"> + <!--codesize--> + <rule ref="rulesets/codesize.xml/CyclomaticComplexity" /> + <rule ref="rulesets/codesize.xml/NPathComplexity" /> + <rule ref="rulesets/codesize.xml/ExcessiveClassComplexity" /> + <rule ref="rulesets/codesize.xml/ExcessiveClassLength" /> + <rule ref="rulesets/codesize.xml/ExcessiveMethodLength" /> + <rule ref="rulesets/codesize.xml/ExcessiveParameterList" /> + <rule ref="rulesets/codesize.xml/ExcessivePublicCount" /> + <rule ref="rulesets/codesize.xml/TooManyFields" /> + <rule ref="rulesets/codesize.xml/TooManyMethods" /> + <!--design--> + <rule ref="rulesets/design.xml/EvalExpression" /> + <rule ref="rulesets/design.xml/ExitExpression" /> + <rule ref="rulesets/design.xml/GotoStatement" /> + <rule ref="rulesets/design.xml/NumberOfChildren" /> + <rule ref="rulesets/design.xml/DepthOfInheritance" /> + <rule ref="rulesets/design.xml/CouplingBetweenObjects" /> + <!--naming--> + <rule ref="rulesets/naming.xml/ConstantNamingConventions" /> + <rule ref="rulesets/naming.xml/BooleanGetMethodName" /> + <!--unusedcode--> + <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter" /> + <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable" /> + <rule ref="rulesets/unusedcode.xml/UnusedPrivateField" /> + <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod" /> + <!--controversial--> + <rule ref="rulesets/controversial.xml/Superglobals" /> + <rule ref="rulesets/controversial.xml/CamelCaseClassName" /> + <rule ref="rulesets/controversial.xml/CamelCasePropertyName" /> + <rule ref="rulesets/controversial.xml/CamelCaseMethodName" /> + <rule ref="rulesets/controversial.xml/CamelCaseParameterName" /> + <rule ref="rulesets/controversial.xml/CamelCaseVariableName" /> + <!--cleancode--> + <rule ref="rulesets/cleancode.xml/BooleanArgumentFlag" /> + <rule ref="rulesets/cleancode.xml/ElseExpression" /> +</ruleset> diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..0c37fb9 --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,19 @@ +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite> + <directory suffix="Test.php">tests</directory> + </testsuite> + </testsuites> + + <logging> + <log type="coverage-html" target="build/coverage"/> + <log type="coverage-clover" target="build/logs/clover.xml"/> + <log type="junit" target="build/logs/junit.xml" logIncompleteSkipped="false"/> + </logging> + + <filter> + <whitelist> + <directory suffix=".php">src</directory> + </whitelist> + </filter> +</phpunit> diff --git a/src/Plugin/CellStyleFixer.php b/src/Plugin/CellStyleFixer.php new file mode 100644 index 0000000..cbbb4af --- /dev/null +++ b/src/Plugin/CellStyleFixer.php @@ -0,0 +1,120 @@ +<?php + + +namespace PHPExcel\StyleFixer\Plugin; + + +use PHPExcel\StyleFixer\Util\Book as BookUtil; +use PHPExcel\StyleFixer\Util\Sheet as SheetUtil; +use PHPExcel\StyleFixer\Util\XmlNamespace; + +class CellStyleFixer implements Plugin +{ + /** + * @var \PHPExcel\StyleFixer\Util\Book + */ + private $bookUtil; + + /** + * @var \PHPExcel\StyleFixer\Util\Sheet + */ + private $sheetUtil; + + /** + * @param BookUtil $bookUtil + * @param SheetUtil $sheetUtil + */ + public function __construct(BookUtil $bookUtil, SheetUtil $sheetUtil) + { + $this->bookUtil = $bookUtil; + $this->sheetUtil = $sheetUtil; + } + + /** + * 各ワークシート内の各セルに付属している書式設定を修復する + * + * @param \ZipArchive $output + * @param \ZipArchive $template + */ + public function execute(\ZipArchive $output, \ZipArchive $template) + { + // テンプレート側のシート名のマッピング + $srcSheetMap = $this->bookUtil->makeSheetMap($template); + // 出力ファイル側のシート名のマッピング + $distSheetMap = $this->bookUtil->makeSheetMap($output); + // 出力ファイル側のシートの印刷範囲マッピング + $distPrintAreas = $this->bookUtil->makePrintAreaMap($output); + + foreach ($distSheetMap as $sheetName => $distSheetPath) { + $distXml = $output->getFromName($distSheetPath); + $distDom = new \DOMDocument; + $distDom->loadXML($distXml); + $distXPath = new \DOMXPath($distDom); + $distXPath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + + $srcXml = $template->getFromName($srcSheetMap[$sheetName]); + $srcDom = new \DOMDocument; + $srcDom->loadXML($srcXml); + $srcXPath = new \DOMXPath($srcDom); + $srcXPath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + + $printArea = null; + if (isset($distPrintAreas[$sheetName])) { + list(,$printArea) = explode('!', $distPrintAreas[$sheetName]); + } + + // セル番地 => スタイル番号 + $styleMap = []; + foreach ($srcXPath->query('//s:worksheet/s:sheetData/s:row') as $srcRow) { + /** @var \DOMElement $srcRow */ + if ($srcRow->hasAttribute('s')) { + /** @var \DOMElement $distRow */ + $distRow = $distXPath->query('//s:worksheet/s:sheetData/s:row[@r="'.$srcRow->getAttribute('r').'"]')->item(0); + if ($distRow) { + $distRow->setAttribute('s', $srcRow->getAttribute('s')); + } + } + + if ($srcRow->hasChildNodes()) { + foreach ($srcRow->childNodes as $srcCell) { + if ($srcCell instanceOf \DOMElement && $srcCell->tagName == 'c' && $srcCell->hasAttribute('s')) { + $styleMap[$srcCell->getAttribute('r')] = $srcCell->getAttribute('s'); + } + } + } + } + + foreach ($distXPath->query('//s:worksheet/s:sheetData/s:row/s:c') as $distCell) { + /** @var \DOMElement $distCell */ + $coordinate = $distCell->getAttribute('r'); + if (isset($styleMap[$coordinate]) && ($this->cellHasValue($distCell) || !$printArea || $this->sheetUtil->inRange($coordinate, $printArea))) { + $distCell->setAttribute('s', $styleMap[$coordinate]); + } else { + $distCell->removeAttribute('s'); + } + } + + $output->addFromString($distSheetPath, $distDom->saveXML()); + } + } + + /** + * @param \DOMElement $cell + * @return bool + */ + private function cellHasValue(\DOMElement $cell) + { + $hasValue = false; + + if ($cell->hasChildNodes()) { + foreach ($cell->childNodes as $child) { + if ($child instanceOf \DOMElement && $child->tagName == 'v') { + $hasValue = true; + break; + } + } + } + + return $hasValue; + } +} diff --git a/src/Plugin/ConditionalFormatFixer.php b/src/Plugin/ConditionalFormatFixer.php new file mode 100644 index 0000000..2c6638b --- /dev/null +++ b/src/Plugin/ConditionalFormatFixer.php @@ -0,0 +1,77 @@ +<?php + +namespace PHPExcel\StyleFixer\Plugin; + +use PHPExcel\StyleFixer\Util\Book as BookUtil; +use PHPExcel\StyleFixer\Util\XmlNamespace; + +/** + * Class ConditionalFormatFixer + * PHPExcelが壊した条件付き書式を修復する + */ +class ConditionalFormatFixer implements Plugin +{ + /** + * @var \PHPExcel\StyleFixer\Util\Book + */ + private $bookUtil; + + public function __construct(BookUtil $bookUtil) + { + $this->bookUtil = $bookUtil; + } + + /** + * 各ワークシート内の条件付き書式設定を修復する + * + * @param \ZipArchive $output + * @param \ZipArchive $template + */ + public function execute(\ZipArchive $output, \ZipArchive $template) + { + // テンプレート側のシート名のマッピング + $srcSheetMap = $this->bookUtil->makeSheetMap($template); + // 出力ファイル側のシート名のマッピング + $distSheetMap = $this->bookUtil->makeSheetMap($output); + + foreach ($distSheetMap as $sheetName => $distSheetPath) { + $distXml = $output->getFromName($distSheetPath); + if (false !== strpos($distXml, 'conditionalFormatting')) { + $distDom = new \DOMDocument; + $distDom->loadXML($distXml); + $distXPath = new \DOMXPath($distDom); + $distXPath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + $distRoot = $distXPath->query('//s:worksheet')->item(0); + $distConditionalFormattings = $distXPath->query('//s:worksheet/s:conditionalFormatting'); + $elementAfterConditionalFormatting = null; + foreach ($distConditionalFormattings as $distConditionalFormatting) { + $elementAfterConditionalFormatting = $distConditionalFormatting->nextSibling; + $distRoot->removeChild($distConditionalFormatting); + } + + while ($elementAfterConditionalFormatting instanceOf \DOMNode && !$elementAfterConditionalFormatting instanceOf \DOMElement) { + $elementAfterConditionalFormatting = $elementAfterConditionalFormatting->nextSibling; + } + if (!$elementAfterConditionalFormatting instanceOf \DOMElement) { + break; + } + + $srcSheetPath = $srcSheetMap[$sheetName]; + $srcXml = $template->getFromName($srcSheetPath); + $srcDom = new \DOMDocument; + $srcDom->loadXML($srcXml); + $srcXPath = new \DOMXPath($srcDom); + $srcXPath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + + $conditionalFormattings = $srcXPath->query('//s:worksheet/s:conditionalFormatting'); + foreach ($conditionalFormattings as $conditionalFormatting) { + /** @var \DOMElement $conditionalFormatting */ + $newDistConditionalFormatting = $distDom->importNode($conditionalFormatting, true); + $distRoot->insertBefore($newDistConditionalFormatting, $elementAfterConditionalFormatting); + } + + $output->addFromString($distSheetPath, $distDom->saveXML()); + } + } + } +} diff --git a/src/Plugin/Plugin.php b/src/Plugin/Plugin.php new file mode 100644 index 0000000..8229040 --- /dev/null +++ b/src/Plugin/Plugin.php @@ -0,0 +1,10 @@ +<?php + + +namespace PHPExcel\StyleFixer\Plugin; + + +interface Plugin +{ + public function execute(\ZipArchive $output, \ZipArchive $template); +} diff --git a/src/StyleFixer.php b/src/StyleFixer.php new file mode 100644 index 0000000..2e4457a --- /dev/null +++ b/src/StyleFixer.php @@ -0,0 +1,77 @@ +<?php + +namespace PHPExcel\StyleFixer; + +use PHPExcel\StyleFixer\Plugin\Plugin; + +/** + * Class StyleFixer + * PHPExcelが壊した書式設定を修復(テンプレートからコピー)する + */ +class StyleFixer +{ + const STYLES_XML_PATH = 'xl/styles.xml'; + + /** + * @var Plugin[] + */ + private $plugins; + + public function __construct(array $plugins = null) + { + $this->plugins = $plugins; + } + + /** + * @param string $outputPath + * @param string $templatePath + */ + public function execute($outputPath, $templatePath) + { + $output = $this->openFile($outputPath); + $template = $this->openFile($templatePath); + + // スタイル定義を修復 + $this->fixStyles($output, $template); + $output->close(); + + // 個別のシートを修復 + if (null !== $this->plugins) { + foreach ($this->plugins as $fixer) { + + $output = $this->openFile($outputPath); + + $fixer->execute($output, $template); + + $output->close(); + } + } + + $template->close(); + } + + /** + * @param string $path + * @return \ZipArchive + */ + protected function openFile($path) + { + $zip = new \ZipArchive; + $zip->open($path); + + return $zip; + } + + /** + * xl/styles.xml全体を修復(テンプレートからコピー)する + * + * @param \ZipArchive $output + * @param \ZipArchive $template + */ + private function fixStyles(\ZipArchive $output, \ZipArchive $template) + { + $srcStylesXml = $template->getFromName(self::STYLES_XML_PATH); + + $output->addFromString(self::STYLES_XML_PATH, $srcStylesXml); + } +} diff --git a/src/Util/Book.php b/src/Util/Book.php new file mode 100644 index 0000000..ac8d557 --- /dev/null +++ b/src/Util/Book.php @@ -0,0 +1,146 @@ +<?php + + +namespace PHPExcel\StyleFixer\Util; + + +class Book +{ + /** + * 人間可読なシート名 => シートのリレーションファイルのパス の連想配列を作る + * + * @param \ZipArchive $zip + * @return array + */ + public function makeSheetRelationMap(\ZipArchive $zip) + { + $sheetMap = $this->makeSheetMap($zip); + + array_walk($sheetMap, function(&$xmlPath){ + $xmlPath = str_replace('worksheets/', 'worksheets/_rels/', $xmlPath).'.rels'; + }); + + return $sheetMap; + } + + /** + * 人間可読なシート名 => シートファイルのパス の連想配列を作る + * + * @param \ZipArchive $zip + * @return array + */ + public function makeSheetMap(\ZipArchive $zip) + { + $relXml = $zip->getFromName('xl/_rels/workbook.xml.rels'); + + $relDom = new \DOMDocument; + $relDom->loadXml($relXml); + $relXPath = new \DOMXPath($relDom); + $relXPath->registerNamespace('r', XmlNamespace::RELATIONSHIPS_NS_URL); + + $sheetRelationIdMaps = $this->makeSheetRelationIdMap($zip); + + $map = []; + foreach ($sheetRelationIdMaps as $sheetName => $relId) { + /** @var null|\DOMElement $relEntry */ + $relEntry = $relXPath->query('//r:Relationships/r:Relationship[@Id="'.$relId.'"]')->item(0); + if ($relEntry) { + $map[$sheetName] = 'xl/'.$relEntry->getAttribute('Target'); + } + } + + return $map; + } + + /** + * 人間可読なシート名 => relationship id の連想配列を作る + * @param \ZipArchive $zip + * @return array + */ + private function makeSheetRelationIdMap(\ZipArchive $zip) + { + $xml = $zip->getFromName('xl/workbook.xml'); + + $dom = new \DOMDocument; + $dom->loadXML($xml); + $xpath = new \DOMXPath($dom); + $xpath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + + $map = []; + foreach ($xpath->query('//s:workbook/s:sheets/s:sheet') as $sheet) { + /** @var \DOMElement $sheet */ + $map[$sheet->getAttribute('name')] = $sheet->getAttribute('r:id'); + } + + return $map; + } + + /** + * 人間可読なシート名 => 印刷範囲 の連想配列を作る + * + * @param \ZipArchive $zip + * @return array + */ + public function makePrintAreaMap(\ZipArchive $zip) + { + $xml = $zip->getFromName('xl/workbook.xml'); + + $dom = new \DOMDocument; + $dom->loadXML($xml); + $xpath = new \DOMXPath($dom); + $xpath->registerNamespace('s', XmlNamespace::SPREADSHEETML_NS_URL); + + $sheets = $xpath->query('//s:workbook/s:sheets/s:sheet'); + $printAreas = $xpath->query('//s:workbook/s:definedNames/s:definedName[@name="_xlnm.Print_Area"]'); + $map = []; + $localSheetId = 0; + foreach ($sheets as $sheet) { + /** @var \DOMElement $definedName */ + $definedName = $printAreas->item($localSheetId); + if ($definedName) { + /** @var \DOMElement $sheet */ + $map[$sheet->getAttribute('name')] = $definedName->nodeValue; + } + $localSheetId++; + } + + return $map; + } + + /** + * 人間可読なシート名 => drawing.xmlファイルの配列 の連想配列を作る + * + * @param \ZipArchive $zip + * @return array + */ + public function makeDrawingMap(\ZipArchive $zip) + { + $map = []; + + $sheetRelationMap = $this->makeSheetRelationMap($zip); + foreach ($sheetRelationMap as $sheetName => $sheetRelFile) { + $drawings = []; + + $relXml = $zip->getFromName($sheetRelFile); + $dom = new \DOMDocument(); + $dom->loadXML($relXml); + $xpath = new \DOMXPath($dom); + $xpath->registerNamespace('r', XmlNamespace::RELATIONSHIPS_NS_URL); + + $drawingFiles = $xpath->query('//r:Relationships/r:Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"]'); + foreach ($drawingFiles as $drawingFile) { + /** @var \DOMElement $drawingFile */ + $drawings[] = str_replace('../', 'xl/', $drawingFile->getAttribute('Target')); + } + + $xpath = null; + $dom = null; + + if (0 !== count($drawings)) { + $map[$sheetName] = $drawings; + } + } + + return $map; + } +} diff --git a/src/Util/Sheet.php b/src/Util/Sheet.php new file mode 100644 index 0000000..6e11e1d --- /dev/null +++ b/src/Util/Sheet.php @@ -0,0 +1,70 @@ +<?php + + +namespace PHPExcel\StyleFixer\Util; + + +class Sheet +{ + + /** + * セル番地がExcel形式のセル範囲(コロン区切りのみ対応)に含まれるかどうか + * + * @param string $coordinate + * @param string $cellRange + * @return bool + */ + public function inRange($coordinate, $cellRange) + { + // 絶対参照の$を削除 + $cellRange = str_replace('$', '', $cellRange); + list($startCell, $endCell) = explode(':', $cellRange); + + // 行の範囲チェック + $rowNumber = $this->detectRowNumberFromCoordinate($coordinate); + if ($rowNumber < $this->detectRowNumberFromCoordinate($startCell) || $rowNumber > $this->detectRowNumberFromCoordinate($endCell)) { + return false; + } + + // 列の範囲チェック + $colNumber = $this->detectColNumberFromCoordinate($coordinate); + if ($colNumber < $this->detectColNumberFromCoordinate($startCell) || $colNumber > $this->detectColNumberFromCoordinate($endCell)) { + return false; + } + + return true; + } + + /** + * セル番地から行番号を取り出す + * + * @param string $coordinate + * @return int + */ + private function detectRowNumberFromCoordinate($coordinate) + { + return intval(preg_replace('/[A-Z]+/', '', $coordinate)); + } + + /** + * セル番地から列番号を取り出す + * + * @param string $coordinate + * @return int + */ + private function detectColNumberFromCoordinate($coordinate) + { + $char = preg_replace('/\d+/', '', $coordinate); + + $charA = 65; + + if (strlen($char) == 1) { + return ord($char) - $charA + 1; + } + + $quot = ord($char[0]) - $charA + 1; + $mod = ord($char[1]) - $charA + 1; + + return $quot * 26 + $mod; + } +} diff --git a/src/Util/XmlNamespace.php b/src/Util/XmlNamespace.php new file mode 100644 index 0000000..581510e --- /dev/null +++ b/src/Util/XmlNamespace.php @@ -0,0 +1,16 @@ +<?php + + +namespace PHPExcel\StyleFixer\Util; + + +class XmlNamespace +{ + const SPREADSHEETML_NS_URL = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'; + const RELATIONSHIPS_NS_URL = 'http://schemas.openxmlformats.org/package/2006/relationships'; + + // drawing関係 + const SPREADSHEETDRAWING_NS_URL = 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheet'; + const DRAWINGML_NS_URL = 'http://schemas.openxmlformats.org/drawingml/2006/main'; + const DRAWINGML_CHART_NS_URL = 'http://schemas.openxmlformats.org/drawingml/2006/chart'; +} diff --git a/tests/Plugin/BasePluginTest.php b/tests/Plugin/BasePluginTest.php new file mode 100644 index 0000000..0686eb4 --- /dev/null +++ b/tests/Plugin/BasePluginTest.php @@ -0,0 +1,49 @@ +<?php + + +namespace PHPExcel\StyleFixer\Plugin; + + +abstract class BasePluginTest extends \PHPUnit_Framework_TestCase +{ + private $basePath; + + public function setUp() + { + $this->basePath = __DIR__.'/../xml'; + } + + public function getOutputXml($path) + { + return file_get_contents($this->basePath.'/output/'.$path); + } + + public function getTemplateXml($path) + { + return file_get_contents($this->basePath.'/template/'.$path); + } + + /** + * @param int $count + * @param array $map + * @return \PHPUnit_Framework_MockObject_MockObject + */ + protected function createBookUtil($count, $map) + { + $bookUtil = $this->getMock('PHPExcel\StyleFixer\Util\Book'); + $bookUtil + ->expects($this->exactly($count)) + ->method('makeSheetMap') + ->with($this->isInstanceOf('\ZipArchive')) + ->will($this->returnValue($map)) + ; + + return $bookUtil; + } + + public function tearDown() + { + $this->output_stylesXml = ''; + $this->template_stylesXml = ''; + } +} diff --git a/tests/Plugin/CellStyleFixerTest.php b/tests/Plugin/CellStyleFixerTest.php new file mode 100644 index 0000000..a30478a --- /dev/null +++ b/tests/Plugin/CellStyleFixerTest.php @@ -0,0 +1,67 @@ +<?php + + +namespace PHPExcel\StyleFixer\Plugin; + +use PHPExcel\StyleFixer\Util\Sheet; + +class CellStyleFixerTest extends BasePluginTest +{ + public function test_execute() + { + $output = $this->getMock('\ZipArchive'); + $template = $this->getMock('\ZipArchive'); + $bookUtil = $this->createBookUtil(2, ['Sheet1' => 'xl/worksheets/sheet1.xml', 'Sheet2' => 'xl/worksheets/sheet2.xml']); + $bookUtil + ->expects($this->once()) + ->method('makePrintAreaMap') + ->with($this->isInstanceOf('\ZipArchive')) + ->will($this->returnValue(['Sheet1' => 'Sheet1!$A$18:$A$18', 'Sheet2' => 'Sheet2!$A$18:$A$18'])) + ; + $sheetUtil = new Sheet(); + + $output + ->expects($this->exactly(2)) + ->method('getFromName') + ->with($this->logicalOr('xl/worksheets/sheet1.xml', 'xl/worksheets/sheet2.xml')) + ->will($this->returnCallback([$this, 'getOutputXml'])) + ; + $template + ->expects($this->exactly(2)) + ->method('getFromName') + ->with($this->logicalOr('xl/worksheets/sheet1.xml', 'xl/worksheets/sheet2.xml')) + ->will($this->returnCallback([$this, 'getTemplateXml'])) + ; + $output + ->expects($this->exactly(2)) + ->method('addFromString') + ->with($this->logicalOr('xl/worksheets/sheet1.xml', 'xl/worksheets/sheet2.xml'), $this->callback([$this, 'assertXmlHasExpectedContent'])) + ; + + $fixer = new CellStyleFixer($bookUtil, $sheetUtil); + $fixer->execute($output, $template); + } + + public function assertXmlHasExpectedContent($xml) + { + // 行スタイルが修復されている + $this->assertContains('<row r="18" s="99">', $xml); + $this->assertNotContains('<row r="18" s="11">', $xml); + // セルスタイルが修復されている + $this->assertContains('<c r="A18" s="33"', $xml); + $this->assertNotContains('<c r="A18" s="11"', $xml); + if (strpos($xml, 'B18')) { + // 印刷範囲外でも値があるセルは修復する + $this->assertContains('<c r="B18" s="33"', $xml); + $this->assertNotContains('<c r="B18" s="11"', $xml); + } + if (strpos($xml, 'C18')) { + // 印刷範囲外で値もないセルは修復せずスタイル情報を破棄 + $this->assertContains('<c r="C18"/>', $xml); + $this->assertNotContains('<c r="C18" s="33"', $xml); + $this->assertNotContains('<c r="C18" s="11"', $xml); + } + + return true; + } +} diff --git a/tests/Plugin/ConditionalFormatFixerTest.php b/tests/Plugin/ConditionalFormatFixerTest.php new file mode 100644 index 0000000..e0d97ac --- /dev/null +++ b/tests/Plugin/ConditionalFormatFixerTest.php @@ -0,0 +1,44 @@ +<?php + + +namespace PHPExcel\StyleFixer\Plugin; + + +class ConditionalFormatFixerTest extends BasePluginTest +{ + public function test_execute() + { + $output = $this->getMock('\ZipArchive'); + $template = $this->getMock('\ZipArchive'); + $bookUtil = $this->createBookUtil(2, ['Sheet1' => 'xl/worksheets/sheet1.xml', 'Sheet2' => 'xl/worksheets/sheet2.xml']); + + $output + ->expects($this->exactly(2)) + ->method('getFromName') + ->with($this->logicalOr('xl/worksheets/sheet1.xml', 'xl/worksheets/sheet2.xml')) + ->will($this->returnCallback([$this, 'getOutputXml'])) + ; + $template + ->expects($this->once()) + ->method('getFromName') + ->with($this->equalTo('xl/worksheets/sheet2.xml')) + ->will($this->returnCallback([$this, 'getTemplateXml'])) + ; + $output + ->expects($this->once()) + ->method('addFromString') + ->with($this->equalTo('xl/worksheets/sheet2.xml'), $this->callback([$this, 'assertXmlHasExpectedContent'])) + ; + + $fixer = new ConditionalFormatFixer($bookUtil); + $fixer->execute($output, $template); + } + + public function assertXmlHasExpectedContent($xml) + { + $this->assertContains('<conditionalFormatting><font/></conditionalFormatting>', $xml); + $this->assertNotContains('<conditionalFormatting/>', $xml); + + return true; + } +} diff --git a/tests/StyleFixerTest.php b/tests/StyleFixerTest.php new file mode 100644 index 0000000..8351525 --- /dev/null +++ b/tests/StyleFixerTest.php @@ -0,0 +1,133 @@ +<?php + + +namespace PHPExcel\StyleFixer; + + +class StyleFixerTest extends \PHPUnit_Framework_TestCase +{ + private $basePath; + + public function setUp() + { + $this->basePath = __DIR__.'/xml'; + } + + public function getOutputXml($path) + { + return file_get_contents($this->basePath.'/output/'.$path); + } + + public function getTemplateXml($path) + { + return file_get_contents($this->basePath.'/template/'.$path); + } + + /** + * @test + */ + public function プラグインなし() + { + $output = $this->getMock('\ZipArchive'); + $template = $this->getMock('\ZipArchive'); + $outputPath = '/path/to/output.xlsx'; + $templatePath = '/path/to/template.xlsx'; + $zips = [ + $outputPath => $output, + $templatePath => $template, + ]; + + $fixer = $this->getMockBuilder('PHPExcel\StyleFixer\StyleFixer') + ->setMethods(['openFile']) + ->getMock() + ; + $fixer + ->expects($this->exactly(2)) + ->method('openFile') + ->with($this->logicalOr($outputPath, $templatePath)) + ->will($this->returnCallback(function($path) use ($zips){ + return $zips[$path]; + })) + ; + $template + ->expects($this->once()) + ->method('getFromName') + ->with('xl/styles.xml') + ->will($this->returnCallback([$this, 'getTemplateXml'])) + ; + $output + ->expects($this->once()) + ->method('addFromString') + ->with('xl/styles.xml', $this->callback(function($xml){ + + $this->assertEquals($this->getTemplateXml('xl/styles.xml'), $xml); + + return true; + })) + ; + $output + ->expects($this->once()) + ->method('close') + ; + + $fixer->execute($outputPath, $templatePath); + } + + /** + * @test + */ + public function プラグインあり() + { + $output = $this->getMock('\ZipArchive'); + $template = $this->getMock('\ZipArchive'); + $outputPath = '/path/to/output.xlsx'; + $templatePath = '/path/to/template.xlsx'; + $zips = [ + $outputPath => $output, + $templatePath => $template, + ]; + $plugin = $this->getMockForAbstractClass('PHPExcel\StyleFixer\Plugin\Plugin'); + + $fixer = $this->getMockBuilder('PHPExcel\StyleFixer\StyleFixer') + ->setMethods(['openFile']) + ->setConstructorArgs([[$plugin]]) + ->getMock() + ; + $fixer + ->expects($this->exactly(3)) + ->method('openFile') + ->with($this->logicalOr($outputPath, $templatePath)) + ->will($this->returnCallback(function($path) use ($zips){ + return $zips[$path]; + })) + ; + $plugin + ->expects($this->once()) + ->method('execute') + ->with($output, $template) + ; + $template + ->expects($this->once()) + ->method('getFromName') + ->with('xl/styles.xml') + ->will($this->returnCallback([$this, 'getTemplateXml'])) + ; + $output + ->expects($this->once()) + ->method('addFromString') + ->with('xl/styles.xml', $this->isType('string')) + ; + $output + ->expects($this->exactly(2)) + ->method('close') + ; + + $fixer->execute($outputPath, $templatePath); + } + + public function tearDown() + { + $this->output_stylesXml = ''; + $this->template_stylesXml = ''; + } +} diff --git a/tests/Util/BookTest.php b/tests/Util/BookTest.php new file mode 100644 index 0000000..2e0c26c --- /dev/null +++ b/tests/Util/BookTest.php @@ -0,0 +1,90 @@ +<?php + + +namespace PHPExcel\StyleFixer\Util; + +class BookTest extends \PHPUnit_Framework_TestCase +{ + public function test_makeSheetMap() + { + $zip = $this->makeZipMock(['xl/workbook.xml', 'xl/_rels/workbook.xml.rels']); + + $bookUtil = new Book(); + $map = $bookUtil->makeSheetMap($zip); + + $this->assertInternalType('array', $map); + $this->assertArrayHasKey('表紙', $map); + $this->assertArrayHasKey('日別_Y', $map); + $this->assertArrayHasKey('日別_YDN', $map); + $this->assertArrayNotHasKey('日別_G', $map); + $this->assertEquals('xl/worksheets/sheet1.xml', $map['表紙']); + } + + public function test_makePrintAreaMap() + { + $zip = $this->makeZipMock(['xl/workbook.xml']); + $bookUtil = new Book(); + $map = $bookUtil->makePrintAreaMap($zip); + + $this->assertInternalType('array', $map); + $this->assertArrayHasKey('表紙', $map); + $this->assertArrayHasKey('日別_Y', $map); + $this->assertArrayHasKey('日別_YDN', $map); + $this->assertArrayNotHasKey('日別_G', $map); + $this->assertEquals('\'日別_Y\'!$A$18:$A$18', $map['日別_Y']); + } + + public function test_makeSheetRelationMap() + { + $zip = $this->makeZipMock(['xl/workbook.xml', 'xl/_rels/workbook.xml.rels']); + + $bookUtil = new Book(); + $map = $bookUtil->makeSheetRelationMap($zip); + + $this->assertInternalType('array', $map); + $this->assertArrayHasKey('表紙', $map); + $this->assertArrayHasKey('日別_Y', $map); + $this->assertArrayHasKey('日別_YDN', $map); + $this->assertArrayNotHasKey('日別_G', $map); + $this->assertEquals('xl/worksheets/_rels/sheet1.xml.rels', $map['表紙']); + } + + public function test_makeDrawingMap() + { + $zip = $this->makeZipMock(['xl/workbook.xml', 'xl/_rels/workbook.xml.rels', 'xl/worksheets/_rels/sheet1.xml.rels', 'xl/worksheets/_rels/sheet2.xml.rels', 'xl/worksheets/_rels/sheet3.xml.rels']); + + $bookUtil = new Book(); + $map = $bookUtil->makeDrawingMap($zip); + + $this->assertInternalType('array', $map); + $this->assertArrayNotHasKey('表紙', $map); + $this->assertArrayHasKey('日別_Y', $map); + $this->assertArrayHasKey('日別_YDN', $map); + $this->assertEquals(['xl/drawings/drawing1.xml', 'xl/drawings/drawing2.xml'], $map['日別_Y']); + } + + /** + * @param string $fileNames + * @return \ZipArchive|\PHPUnit_Framework_MockObject_MockObject + */ + private function makeZipMock($fileNames) + { + $zip = $this->getMock('\ZipArchive'); + $zip + ->expects($this->exactly(count($fileNames))) + ->method('getFromName') + ->with($this->callback( + function($fileName) use ($fileNames){ + return in_array($fileName, $fileNames); + })) + ->will($this->returnCallback([$this, 'getXml'])) + ; + + return $zip; + } + + public function getXml($path) + { + return file_get_contents(__DIR__.'/../xml/template/'.$path); + } +} diff --git a/tests/Util/SheetTest.php b/tests/Util/SheetTest.php new file mode 100644 index 0000000..339e731 --- /dev/null +++ b/tests/Util/SheetTest.php @@ -0,0 +1,38 @@ +<?php + + +namespace PHPExcel\StyleFixer\Util; + + +class SheetTest extends \PHPUnit_Framework_TestCase +{ + /** + * @param string $cell + * @param string $range + * @param bool $expect + * @test + * @dataProvider provideInRangeTestData + */ + public function test_inRange($cell, $range, $expect) + { + $sheetUtil = new Sheet(); + $this->assertEquals($expect, $sheetUtil->inRange($cell, $range)); + } + + public function provideInRangeTestData() + { + return [ + ['A1', 'A2:A10', false], + ['A2', 'A2:A10', true], + ['A5', 'A2:A10', true], + ['A10', 'A2:A10', true], + ['A11', 'A2:A10', false], + ['A1', 'B1:Z1', false], + ['B1', 'B1:Z1', true], + ['C1', 'B1:Z1', true], + ['Z1', 'B1:Z1', true], + ['AA1', 'B1:Z1', false], + ['A1', 'AA1:AA2', false], + ]; + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..dd79cfa --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,4 @@ +<?php + +/** @var $loader \Composer\Autoload\ClassLoader */ +$loader = require dirname(__DIR__) . '/vendor/autoload.php'; diff --git a/tests/xml/output/xl/_rels/workbook.xml.rels b/tests/xml/output/xl/_rels/workbook.xml.rels new file mode 100644 index 0000000..21fc1eb --- /dev/null +++ b/tests/xml/output/xl/_rels/workbook.xml.rels @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/> + <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet2.xml"/> +</Relationships> diff --git a/tests/xml/output/xl/styles.xml b/tests/xml/output/xl/styles.xml new file mode 100644 index 0000000..3905982 --- /dev/null +++ b/tests/xml/output/xl/styles.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<styleSheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><numFmts count="4"><numFmt numFmtId="164" formatCode="yyyy/mm/dd\ \(aaa\)"/><numFmt numFmtId="165" formatCode=""¥"#,##0"""/><numFmt numFmtId="166" formatCode=""¥"#,##0.00"/><numFmt numFmtId="167" formatCode="0.0"/></numFmts><fonts count="10"><font><b val="0"/><i val="0"/><strike val="0"/><u val="none"/><sz val="9"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="9"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="0"/><i val="0"/><strike val="0"/><u val="none"/><sz val="10"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="10"/><color rgb="FFFFFFFF"/><name val="Arial"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="10"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="9"/><color rgb="FFFFFFFF"/><name val="MS Pゴシック"/></font><font><b val="0"/><i val="0"/><strike val="0"/><u val="none"/><sz val="11"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="24"/><color rgb="FF009900"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="20"/><color rgb="FF000000"/><name val="MS Pゴシック"/></font><font><b val="1"/><i val="0"/><strike val="0"/><u val="none"/><sz val="28"/><color rgb="FF009900"/><name val="MS Pゴシック"/></font></fonts><fills count="6"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"><fgColor rgb="FFFFFFFF"/><bgColor rgb="FF000000"/></patternFill></fill><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="solid"><fgColor rgb="FF33CC33"/><bgColor rgb="FFFFFFFF"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FF99FF99"/><bgColor rgb="FFFFFFFF"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFDDFFDD"/><bgColor rgb="FFFFFFFF"/></patternFill></fill></fills><borders count="13"><border/><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom></border><border><bottom style="medium"><color rgb="FF009900"/></bottom></border><border><left style="thin"><color rgb="FF009900"/></left><top style="thin"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom></border><border><left style="thin"><color rgb="FF009900"/></left><top style="thin"><color rgb="FF009900"/></top></border><border><top style="thin"><color rgb="FF009900"/></top></border><border><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top></border><border><left style="thin"><color rgb="FF009900"/></left><bottom style="thin"><color rgb="FF009900"/></bottom></border><border><bottom style="thin"><color rgb="FF009900"/></bottom></border><border><right style="thin"><color rgb="FF009900"/></right><bottom style="thin"><color rgb="FF009900"/></bottom></border><border><bottom style="double"><color rgb="FF009900"/></bottom></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><bottom style="thin"><color rgb="FF009900"/></bottom></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="82"><xf xfId="0" fontId="0" numFmtId="0" fillId="2" borderId="0" applyFont="0" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="1" numFmtId="0" fillId="2" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="2" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="1"><alignment horizontal="general" vertical="bottom" textRotation="0" wrapText="true" shrinkToFit="false"/></xf><xf xfId="0" fontId="3" numFmtId="0" fillId="3" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="3" quotePrefix="1" numFmtId="0" fillId="3" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="1"><alignment horizontal="general" vertical="top" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="4" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="9" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="164" fillId="2" borderId="3" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="4" numFmtId="0" fillId="2" borderId="3" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="9" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="9" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="10" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="166" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="167" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="5" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="5" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="165" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="3" fillId="2" borderId="1" applyFont="1" applyNumberFormat="1" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="2" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="1"><alignment horizontal="general" vertical="top" textRotation="0" wrapText="true" shrinkToFit="false"/></xf><xf xfId="0" fontId="0" numFmtId="0" fillId="2" borderId="1" applyFont="0" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="true" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="4" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="5" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="6" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="7" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="8" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="9" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="0" numFmtId="0" fillId="2" borderId="1" applyFont="0" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="1" numFmtId="0" fillId="2" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="6" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="7" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="7" numFmtId="0" fillId="2" borderId="2" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="8" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="5" numFmtId="0" fillId="3" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="2" borderId="10" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="9" numFmtId="0" fillId="2" borderId="0" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="0" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="9" numFmtId="0" fillId="2" borderId="10" applyFont="1" applyNumberFormat="0" applyFill="0" applyBorder="1" applyAlignment="0"><alignment horizontal="general" vertical="center" textRotation="0" wrapText="false" shrinkToFit="false"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="3" borderId="1" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="3" borderId="11" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf><xf xfId="0" fontId="2" numFmtId="0" fillId="3" borderId="12" applyFont="1" applyNumberFormat="0" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" textRotation="0" wrapText="false" shrinkToFit="true"/></xf></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="4"><dxf><font><sz val="10"/><color rgb="FF0000FF"/><name val="Calibri"/></font><numFmt numFmtId="164" formatCode="General"/><alignment/><border/></dxf><dxf><font><sz val="10"/><color rgb="FFFF0000"/><name val="Calibri"/></font><numFmt numFmtId="164" formatCode="General"/><alignment/><border/></dxf><dxf><font><sz val="10"/><color rgb="FF0000FF"/><name val="Calibri"/></font><numFmt numFmtId="164" formatCode="General"/><alignment/><border/></dxf><dxf><font><sz val="10"/><color rgb="FFFF0000"/><name val="Calibri"/></font><numFmt numFmtId="164" formatCode="General"/><alignment/><border/></dxf></dxfs><tableStyles defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotTableStyle1"/></styleSheet> diff --git a/tests/xml/output/xl/workbook.xml b/tests/xml/output/xl/workbook.xml new file mode 100644 index 0000000..dd4364c --- /dev/null +++ b/tests/xml/output/xl/workbook.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<workbook xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505"/><workbookPr codeName="ThisWorkbook"/><bookViews><workbookView activeTab="0" autoFilterDateGrouping="1" firstSheet="0" minimized="0" showHorizontalScroll="1" showSheetTabs="1" showVerticalScroll="1" tabRatio="600" visibility="visible"/></bookViews><sheets> + <sheet name="表紙" sheetId="1" r:id="rId4"/><!-- 条件付き書式なしのシート --> + <sheet name="日別_Y" sheetId="2" r:id="rId5"/><!-- 条件付き書式ありのシート --> +</sheets><calcPr calcId="999999" calcMode="auto" calcCompleted="0" fullCalcOnLoad="1"/> +<definedNames> + <definedName name="_xlnm.Print_Area" localSheetId="0">'表紙'!$A$18:$A:$18</definedName> + <definedName name="_xlnm.Print_Area" localSheetId="1">'日別_Y'!$A$18:$A:$18</definedName> +</definedNames> +</workbook> diff --git a/tests/xml/output/xl/worksheets/sheet1.xml b/tests/xml/output/xl/worksheets/sheet1.xml new file mode 100644 index 0000000..3ec2727 --- /dev/null +++ b/tests/xml/output/xl/worksheets/sheet1.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> + <sheetData> + <row r="18" s="11"> + <c r="A18" s="11"><v>41111</v></c> + </row> + </sheetData> +</worksheet> diff --git a/tests/xml/output/xl/worksheets/sheet2.xml b/tests/xml/output/xl/worksheets/sheet2.xml new file mode 100644 index 0000000..9846bae --- /dev/null +++ b/tests/xml/output/xl/worksheets/sheet2.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> + <sheetData> + <row r="18" s="11"> + <c r="A18" s="11"><v>41111</v></c> + <c r="B18" s="11"><v>1234</v></c> + <c r="C18" s="11"/> + </row> + </sheetData> +<conditionalFormatting /> +<pageMargins /> +</worksheet> diff --git a/tests/xml/template/xl/_rels/workbook.xml.rels b/tests/xml/template/xl/_rels/workbook.xml.rels new file mode 100644 index 0000000..62b8d16 --- /dev/null +++ b/tests/xml/template/xl/_rels/workbook.xml.rels @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/> + <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet2.xml"/> + <Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet3.xml"/> +</Relationships> diff --git a/tests/xml/template/xl/drawings/drawing1.xml b/tests/xml/template/xl/drawings/drawing1.xml new file mode 100644 index 0000000..5222e6f --- /dev/null +++ b/tests/xml/template/xl/drawings/drawing1.xml @@ -0,0 +1,68 @@ +<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> + <xdr:twoCellAnchor> + <xdr:from> + <xdr:col>0</xdr:col> + <xdr:colOff>0</xdr:colOff> + <xdr:row>108</xdr:row> + <xdr:rowOff>0</xdr:rowOff> + </xdr:from> + <xdr:to> + <xdr:col>6</xdr:col> + <xdr:colOff>619124</xdr:colOff> + <xdr:row>125</xdr:row> + <xdr:rowOff>0</xdr:rowOff> + </xdr:to> + <xdr:graphicFrame macro=""> + <xdr:nvGraphicFramePr> + <xdr:cNvPr id="9" name="グラフ 8"/> + <xdr:cNvGraphicFramePr> + <a:graphicFrameLocks/> + </xdr:cNvGraphicFramePr> + </xdr:nvGraphicFramePr> + <xdr:xfrm> + <a:off x="0" y="0"/> + <a:ext cx="0" cy="0"/> + </xdr:xfrm> + <a:graphic> + <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"> + <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId3"/> + </a:graphicData> + </a:graphic> + </xdr:graphicFrame> + <xdr:clientData/> + </xdr:twoCellAnchor> + <xdr:twoCellAnchor> + <xdr:from> + <xdr:col>7</xdr:col> + <xdr:colOff>285751</xdr:colOff> + <xdr:row>108</xdr:row> + <xdr:rowOff>0</xdr:rowOff> + </xdr:from> + <xdr:to> + <xdr:col>15</xdr:col> + <xdr:colOff>9525</xdr:colOff> + <xdr:row>125</xdr:row> + <xdr:rowOff>0</xdr:rowOff> + </xdr:to> + <xdr:graphicFrame macro=""> + <xdr:nvGraphicFramePr> + <xdr:cNvPr id="10" name="グラフ 9"/> + <xdr:cNvGraphicFramePr> + <a:graphicFrameLocks/> + </xdr:cNvGraphicFramePr> + </xdr:nvGraphicFramePr> + <xdr:xfrm> + <a:off x="0" y="0"/> + <a:ext cx="0" cy="0"/> + </xdr:xfrm> + <a:graphic> + <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"> + <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId4"/> + </a:graphicData> + </a:graphic> + </xdr:graphicFrame> + <xdr:clientData/> + </xdr:twoCellAnchor> +</xdr:wsDr> diff --git a/tests/xml/template/xl/sharedStrings.xml b/tests/xml/template/xl/sharedStrings.xml new file mode 100644 index 0000000..d96aa8b --- /dev/null +++ b/tests/xml/template/xl/sharedStrings.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="2" uniqueCount="2"> + <si><t>test01</t></si> + <si><t>test02</t></si> +</sst> diff --git a/tests/xml/template/xl/styles.xml b/tests/xml/template/xl/styles.xml new file mode 100644 index 0000000..7dab59d --- /dev/null +++ b/tests/xml/template/xl/styles.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="9"><numFmt numFmtId="7" formatCode=""¥"#,##0.00;"¥"\-#,##0.00"/><numFmt numFmtId="176" formatCode=""¥"#,##0"""/><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/><numFmt numFmtId="178" formatCode="yyyy/mm"/><numFmt numFmtId="179" formatCode="00":00""/><numFmt numFmtId="180" formatCode="\+0.00;\-0.00;0"/><numFmt numFmtId="181" formatCode="\+0.0;\-0.0;0"/><numFmt numFmtId="182" formatCode=""¥"#,##0.00"/><numFmt numFmtId="183" formatCode="0.0"/></numFmts><fonts count="17" x14ac:knownFonts="1"><font><sz val="9"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="6"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/></font><font><b/><sz val="9"/><color theme="0"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="9"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="11"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="10"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="10"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="24"/><color rgb="FF009900"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="20"/><color theme="1"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="10"/><color theme="0"/><name val="Arial"/><family val="2"/></font><font><sz val="6"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="10"/><color theme="0"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><b/><sz val="28"/><color rgb="FF009900"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="10"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="10"/><color theme="0" tint="-0.499984740745262"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="9"/><color rgb="FF0000FF"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font><font><sz val="9"/><color rgb="FF006600"/><name val="MS Pゴシック"/><family val="3"/><charset val="128"/><scheme val="minor"/></font></fonts><fills count="8"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor rgb="FF33CC33"/><bgColor indexed="64"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FF99FF99"/><bgColor indexed="64"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFFFFFCC"/><bgColor indexed="64"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor theme="3" tint="0.79998168889431442"/><bgColor indexed="64"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFFFCCFF"/><bgColor indexed="64"/></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFDDFFDD"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="33"><border><left/><right/><top/><bottom/><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right/><top/><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right/><top/><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="thin"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="thin"><color rgb="FF009900"/></top><bottom/><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top/><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="hair"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="hair"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top/><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="thin"><color rgb="FF009900"/></top><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right/><top style="thin"><color rgb="FF009900"/></top><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom/><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top/><bottom/><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom/><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top/><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top/><bottom/><diagonal/></border><border><left/><right/><top style="thin"><color rgb="FF009900"/></top><bottom/><diagonal/></border><border><left/><right/><top/><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="double"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="double"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="double"><color rgb="FF009900"/></top><bottom/><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="double"><color rgb="FF009900"/></top><bottom style="thin"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right style="thin"><color rgb="FF009900"/></right><top/><bottom style="double"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top/><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top/><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left style="thin"><color rgb="FF009900"/></left><right/><top style="thin"><color rgb="FF009900"/></top><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="thin"><color rgb="FF009900"/></top><bottom style="medium"><color rgb="FF009900"/></bottom><diagonal/></border><border><left/><right style="thin"><color rgb="FF009900"/></right><top style="double"><color rgb="FF009900"/></top><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"><alignment vertical="center"/></xf></cellStyleXfs><cellXfs count="311"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="3" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="0" fontId="9" fillId="2" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="9" fillId="2" borderId="1" xfId="0" quotePrefix="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="top"/></xf><xf numFmtId="0" fontId="5" fillId="3" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="left" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="7" fontId="5" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="3" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="11" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="177" fontId="5" fillId="0" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="177" fontId="5" fillId="5" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="177" fontId="5" fillId="6" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="7" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="0" borderId="4" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="14" fillId="0" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="180" fontId="14" fillId="0" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="181" fontId="14" fillId="0" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="7" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="14" fillId="7" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="180" fontId="14" fillId="7" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="181" fontId="14" fillId="7" borderId="8" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="left" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="left" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="14" fillId="0" borderId="0" xfId="0" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="178" fontId="14" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="10" fontId="14" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="14" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="182" fontId="14" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyFont="1"><alignment vertical="center"/></xf><xf numFmtId="3" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="5" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="6" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="4" borderId="27" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="9" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="26" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="11" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="0" xfId="0" applyFont="1" applyFill="1"><alignment vertical="center"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="177" fontId="5" fillId="7" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="4" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="7" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="7" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="8" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="3" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="top" wrapText="1"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="5" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="20" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="17" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="6" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="21" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="2" fillId="2" borderId="18" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="13" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="7" borderId="13" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="7" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="12" fillId="0" borderId="0" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="12" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="13" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="9" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1"><alignment vertical="center"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="6" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="21" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="18" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="6" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="21" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="18" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="5" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="20" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="17" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="6" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="21" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="2" borderId="18" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="11" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="12" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="5" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="17" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="14" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="19" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="28" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="29" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="30" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="31" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="22" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="23" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="7" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="15" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="30" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="31" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="6" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="18" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="7" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="7" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="178" fontId="5" fillId="0" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="179" fontId="5" fillId="7" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="179" fontId="5" fillId="7" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="179" fontId="5" fillId="0" borderId="4" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="179" fontId="5" fillId="0" borderId="16" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="13" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="9" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="5" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="6" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="6" fillId="4" borderId="10" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="5" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" wrapText="1" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="16" fillId="7" borderId="14" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="16" fillId="7" borderId="19" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="0" fillId="7" borderId="6" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="0" fillId="7" borderId="18" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="15" fillId="7" borderId="5" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="15" fillId="7" borderId="17" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="13" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="7" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="5" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="17" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="13" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="1" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="16" fillId="0" borderId="14" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="16" fillId="0" borderId="19" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="6" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="18" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="14" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="19" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="13" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="9" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="5" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="17" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="6" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="18" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="24" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="15" fillId="0" borderId="32" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="177" fontId="6" fillId="4" borderId="11" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="177" fontId="6" fillId="4" borderId="12" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="177" fontId="6" fillId="4" borderId="15" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="13" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" wrapText="1"/></xf><xf numFmtId="0" fontId="11" fillId="2" borderId="9" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="center" vertical="center" wrapText="1"/></xf><xf numFmtId="176" fontId="5" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="10" fontId="5" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="3" fontId="5" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="0" fontId="13" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment vertical="center" shrinkToFit="1"/></xf><xf numFmtId="183" fontId="5" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf><xf numFmtId="182" fontId="5" fillId="0" borderId="25" xfId="0" applyNumberFormat="1" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1"><alignment horizontal="right" vertical="center" shrinkToFit="1"/></xf></cellXfs><cellStyles count="1"><cellStyle name="標準" xfId="0" builtinId="0"/></cellStyles><dxfs count="82"><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><b/><i val="0"/></font></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FF0000FF"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf><dxf><font><strike val="0"/><color rgb="FFFF0000"/></font><numFmt numFmtId="177" formatCode="yyyy/mm/dd\ \(aaa\)"/></dxf></dxfs><tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><colors><mruColors><color rgb="FF0000FF"/><color rgb="FFFF0000"/><color rgb="FFDDFFDD"/><color rgb="FF009900"/><color rgb="FFFF99CC"/><color rgb="FFFFFF99"/><color rgb="FFFFFFCC"/><color rgb="FFFFCCFF"/><color rgb="FFD3FFD3"/><color rgb="FF006600"/></mruColors></colors><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext></extLst></styleSheet> diff --git a/tests/xml/template/xl/workbook.xml b/tests/xml/template/xl/workbook.xml new file mode 100644 index 0000000..51c6bb7 --- /dev/null +++ b/tests/xml/template/xl/workbook.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<workbook xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505"/><workbookPr codeName="ThisWorkbook"/><bookViews><workbookView activeTab="0" autoFilterDateGrouping="1" firstSheet="0" minimized="0" showHorizontalScroll="1" showSheetTabs="1" showVerticalScroll="1" tabRatio="600" visibility="visible"/></bookViews><sheets> + <sheet name="表紙" sheetId="4" r:id="rId4"/><!-- 条件付き書式なしのシート --> + <sheet name="日別_Y" sheetId="5" r:id="rId5"/><!-- 条件付き書式ありのシート --> + <sheet name="日別_YDN" sheetId="6" r:id="rId6"/><!-- 出力側に存在しないシート --> +</sheets><calcPr calcId="999999" calcMode="auto" calcCompleted="0" fullCalcOnLoad="1"/> +<definedNames> + <definedName name="_xlnm.Print_Area" localSheetId="0">'表紙'!$A$18:$A$18</definedName><!-- 表紙の印刷範囲設定 --> + <definedName name="_xlnm.Print_Area" localSheetId="1">'日別_Y'!$A$18:$A$18</definedName><!-- 日別Yの印刷範囲設定 --> + <definedName name="_xlnm.Print_Area" localSheetId="2">'日別_YDN'!$A$18:$A$18</definedName><!-- 日別YDNの印刷範囲設定 --> +</definedNames> +</workbook> diff --git a/tests/xml/template/xl/worksheets/_rels/sheet1.xml.rels b/tests/xml/template/xl/worksheets/_rels/sheet1.xml.rels new file mode 100644 index 0000000..4439079 --- /dev/null +++ b/tests/xml/template/xl/worksheets/_rels/sheet1.xml.rels @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" Target="../printerSettings/printerSettings1.bin"/> +</Relationships> diff --git a/tests/xml/template/xl/worksheets/_rels/sheet2.xml.rels b/tests/xml/template/xl/worksheets/_rels/sheet2.xml.rels new file mode 100644 index 0000000..d11cff2 --- /dev/null +++ b/tests/xml/template/xl/worksheets/_rels/sheet2.xml.rels @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" Target="../drawings/drawing1.xml"/> + <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" Target="../drawings/drawing2.xml"/> + <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" Target="../printerSettings/printerSettings2.bin"/> +</Relationships> diff --git a/tests/xml/template/xl/worksheets/_rels/sheet3.xml.rels b/tests/xml/template/xl/worksheets/_rels/sheet3.xml.rels new file mode 100644 index 0000000..ea29b7a --- /dev/null +++ b/tests/xml/template/xl/worksheets/_rels/sheet3.xml.rels @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" Target="../drawings/drawing3.xml"/> + <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" Target="../printerSettings/printerSettings2.bin"/> +</Relationships> diff --git a/tests/xml/template/xl/worksheets/sheet1.xml b/tests/xml/template/xl/worksheets/sheet1.xml new file mode 100644 index 0000000..d1e903e --- /dev/null +++ b/tests/xml/template/xl/worksheets/sheet1.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> + <sheetData> + <row r="18" s="99"> + <c r="A18" s="33"><v>41111</v></c> + </row> + </sheetData> +</worksheet> diff --git a/tests/xml/template/xl/worksheets/sheet2.xml b/tests/xml/template/xl/worksheets/sheet2.xml new file mode 100644 index 0000000..dd793db --- /dev/null +++ b/tests/xml/template/xl/worksheets/sheet2.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> + <sheetData> + <row r="18" s="99"> + <c r="A18" s="33"><v>41111</v></c> + <c r="B18" s="33"/> + <c r="C18" s="33"/> + </row> + </sheetData> +<conditionalFormatting><font /></conditionalFormatting> +<pageMargins /> +</worksheet> |