Commit Graph

269 Commits

Author SHA1 Message Date
Adrien Crivelli
1a52e23f08
Remove obsolete math polyfills 2017-02-16 11:15:22 +09:00
Adrien Crivelli
4ae95e5f7c
Drop obsolete method check existence 2017-02-16 11:01:35 +09:00
Adrien Crivelli
ce8ba1fa66
Drop obsolete PHP 5.2 specific code 2017-02-16 10:42:54 +09:00
Alex Milde
47d7260c43 Ignore images with missing data when reading xlsx
Ignore images with missing data when reading xlsx

Fixes #94, closes #95
2017-02-16 09:42:07 +09:00
Roland Häder
99e5a8e919
Use isset() instead of in_array() for increased performance and code simplification
Closes #82

Signed-off-by: Roland Häder <roland@mxchange.org>
2017-02-14 23:06:35 +09:00
Adrien Crivelli
6e247c30d9
Drop support for SQLite 2 because it does not exist in PHP 5.6+ anymore 2017-02-14 12:53:20 +09:00
Zharikov Viktor
de5a04e4cb
Avoid adding an unnecessary extra cell at the end of table when writing to HTML
Fixes #91, and closes #84
2017-02-14 11:57:29 +09:00
Tony Brix
149f9e649b fill color will change startColor and endColor (#90) 2017-02-10 21:03:17 +09:00
Adrien Crivelli
fe73b2d402
Drop PHPSPREADSHEET_ROOT constant 2017-01-23 15:35:10 +09:00
Adrien Crivelli
8dddf56c2e
Use proper syntax for variadic functions
This simplify code, increase readability and improve the function
signature for API users.
2017-01-23 15:01:20 +09:00
Adrien Crivelli
152d39bd42
Unalign docblock
Because alignment was all broken and becaues it doesn't improve much
the code readability, but potentially create more complicated diff, we
prefer to unlaign all docblocks.
2017-01-23 11:25:02 +09:00
Adrien Crivelli
031af1e9d2
Standardize writers and readers name to be the format most common extension in CamelCase 2017-01-22 17:39:23 +09:00
Adrien Crivelli
1cdc8531b8
Rename writer PDF to Pdf for consistency 2017-01-22 00:58:48 +09:00
Adrien Crivelli
035281f04c
Basic test covering of all PDF writers
Third party PDF libraries must now be installed via composer and naturally
via composer autoloading mechanism. Because of that it is not necessary
to specify their path on disk. The usage is simplified and it allows us
to include them in our unit tests.

This also means that from now on PhpSpreadsheet must use composer autoloader
mechanism. The internal autoloading implementation was dropped.
2017-01-22 00:49:44 +09:00
titanrat
66f37218c9 Fix mpdf writer to work with MPDF 6.1.3 (#76)
Fix old namespace. New writer tested with MPDF 6.1.3
2017-01-19 18:26:27 +09:00
Сергей Симонян
2aa7707826 Use use sections instead of fully qualified class names (#69) 2017-01-10 02:09:39 +09:00
Adrien Crivelli
1b0b609c30
Remove dead code 2017-01-05 12:29:30 +09:00
Adrien Crivelli
ec928d393f
Fix indentation as suggested by Scrunitizer 2017-01-05 12:26:20 +09:00
Adrien Crivelli
e9d03cc6d3
Apply Scrutinzer patches for spacing 2017-01-05 12:14:44 +09:00
Adrien Crivelli
c8a69dfb54
Fix comment #65 2017-01-05 11:11:18 +09:00
Roland Häder
3723bb825b Added Row::getWorksheet() to expose row's bounded worksheet #59, #60 2017-01-05 11:05:49 +09:00
Christian Schmidt
61408fc691 Properly format non-integer font sizes (#66)
The OOXML spec defines the font sizes (the `sz` element) as a double, so the value needs to be wrapped in `PHPExcel_Shared_String::FormatNumber()` to avoid breaking in non-English locales.
2017-01-04 17:27:42 +09:00
Adrien Crivelli
0c75d64817
Remove unused variables 2016-12-26 14:36:47 +09:00
Adrien Crivelli
8ce610eb59
Use correct declared debugLog 2016-12-26 13:59:31 +09:00
Adrien Crivelli
56245d558e
Use ::class notation as much as possible
```
               *             ,
                           _/^\_
                          <     >
         *                 /.-.\         *
                  *        `/&\`                   *
                          ,@.*;@,
                         /_o.I %_\    *
            *           (`'--:o(_@;
                       /`;--.,__ `')             *
                      ;@`o % O,*`'`&\
                *    (`'--)_@ ;o %'()\      *
                     /`;--._`''--._O'@;
                    /&*,()~o`;-.,_ `""`)
         *          /`,@ ;+& () o*`;-';\
                   (`""--.,_0 +% @' &()\
                   /-.,_    ``''--....-'`)  *
              *    /@%;o`:;'--,.__   __.'\
                  ;*,&(); @ % &^;~`"`o;@();         *
                  /(); o^~; & ().o@*&`;&%O\
            jgs   `"="==""==,,,.,="=="==="`
               __.----.(\-''#####---...___...-----._
             '`         \)_`"""""`
                     .--' ')
                   o(  )_-\
                     `"""` `
```
2016-12-26 13:21:12 +09:00
Roman Kravchuk
a045a446d5 fix namespace for ReflectionObject class
PHP Fatal error:  Class 'PhpOffice\PhpSpreadsheet\Writer\ReflectionObject' not found in PhpSpreadsheet/src/PhpSpreadsheet/Writer/Ods.php on line 151
2016-12-26 12:27:40 +09:00
John Doe
a39d71ec16
Fix attaching drawing for xls
FIX #53, #61
2016-12-26 12:20:59 +09:00
Adrien Crivelli
af82e266c0
A few more manual code style fixes for phpcs 2016-12-23 00:08:55 +09:00
Adrien Crivelli
8c66afe39a
Upgrade to PHP-CS-Fixer 2.0 2016-12-22 23:46:26 +09:00
Adrien Crivelli
0de994c998
Fix IMSQRT() tests on PHP 7.1 2016-12-22 22:54:58 +09:00
MarkBaker
03f96ab6d8 GH-57 Bug fix in Border.php 2016-12-18 23:06:10 +00:00
Arthur-min
a5c21a7b43 Exxcel 2003 XML working pattern property (#54) 2016-12-14 22:21:16 +09:00
Enyby
30a5e4b893
Fixed bug on load XML with column filter
`continue;` break columnID increment. Another problem can be on Merged cells.
2016-12-14 22:03:21 +09:00
DCoderLT
2484a03f19
Fix fatal error when RichText extract container cell's font
`RichText` tries to extract container cell's font via
`Cell->getParent()->getStyle(...)`, which crashes because
`getParent()` does not return a worksheet. Changing it to
`getWorksheet()` fixes the problem.
2016-12-14 21:56:57 +09:00
jacobsreynolds
720fb3eff5
Read background color of cells from HTML file
If a <td> in HTML has a bgcolor attribute, it is then applied to the spreadsheet file
2016-12-14 21:40:59 +09:00
Arthur Miniconi
ab7aa68300
Excel2003 XML parse Interior Pattern property 2016-12-14 21:29:36 +09:00
golodnyi
a6a709a4ba Not relevant parameters when calling functions 2016-12-09 12:33:41 +09:00
Adrien Crivelli
c8a8fd2610
Stricter check whether file exists before reading
This should avoid issues when user submit a non-existing filename
that is wrongly identified as CSV.

Typically https://github.com/PHPOffice/PHPExcel/issues/1076 and
https://github.com/PHPOffice/PHPExcel/issues/1078 could have been
avoided.
2016-12-09 00:15:22 +09:00
golodnyi
5e03e282e5
Duplicate case in switch 2016-12-08 19:22:58 +09:00
mattkibbler
62345ef4da
Allow start and end date of DATEDIF function to be the same 2016-12-04 19:04:10 +09:00
Nikolay Ninkov
a7155d8890
Partial localization of functions in Bulgarian 2016-12-04 18:48:21 +09:00
Adrien Crivelli
3bd0f6f985
Fix autofilter cloning across PHP versions
Avoid indirect access variable ambiguity across PHP 5.6 and PHP 7.0
2016-12-04 16:44:40 +09:00
Matthias Van Woensel
39b8dbd0a1
Adding float cast to MOD function
If $a or $b are not strings, you can get an error that fmod needs param 1 ($a) to be of type double.
MS Excel does not fall over when you insert an empty string in MOD, so I'm guessing PHPExcel should do the same?
2016-12-04 16:12:51 +09:00
Gemorroj
48a6e86adc
Added missing variables 2016-12-04 15:58:21 +09:00
Herman M. Hofman
b964788d5c
FIX PHP Fatal Error on an invalid Blip Field.
For (still) unknown reasons, PHPExcel detects a wrong field type.
If there is no BSE Index, we will fail here and other fields are not read.
So if the BSE Index < 1, continue with the next field.
TODO: Why is there no BSE Index?
      Is this a new Office Version?
      Password protected field?
      More likely : a uncompatible picture

PHP Notice:  Undefined offset: -1 in Classes/PHPExcel/Reader/Excel5.php on line 1063
PHP Fatal error:  Call to a member function getBlipType() on a non-object in Classes/PHPExcel/Reader/Excel5.php on line 1064
2016-12-04 15:47:20 +09:00
josch1710
c1f5bdba5d
removeColumn doesn't remove all cells
removeColumn doesn't remove all cells, because CacheBase::deleteCacheData only unsets cell data if they are objects.
But cached cell data could be arrays.
I moved the unset from inside the if block (line 150 ff) to after the if block.
2016-12-04 15:33:47 +09:00
appelflap
3b4f54722f
Also check Library Path
LibraryName was being checked twice.
2016-12-04 15:28:50 +09:00
Adrien Crivelli
6d44884e19
Drop deprecated methods #22 2016-12-04 15:06:31 +09:00
Adrien Crivelli
e6d8362fb2
Some functions were not callable because of wrong declaration 2016-12-03 14:51:04 +09:00
Adrien Crivelli
22b9a3f66f
Drop PHP version checked according to our new requirement of PHP 5.5 2016-12-03 11:35:04 +09:00
Adrien Crivelli
5b7d6cc524
Remove obsolete ##VERSION## and ##DATE## that are not managed by svn anymore 2016-12-03 11:31:35 +09:00
Adrien Crivelli
4b0d3c8c1c
Drop the old \PHPExcel_Calculation_Functions::VERSION()
This fucntion does not exist in Excel and it is non trivial to implement
without svn. Thus it was incorrect for many releases.
2016-12-03 11:19:22 +09:00
Adrien Crivelli
854f7e838d
Support #N/A values in charts
FIX #50
2016-12-03 10:49:03 +09:00
Adrien Crivelli
268fc1a4c4
Fix unit tests for PHP < 7.0 2016-11-28 01:58:10 +09:00
Adrien Crivelli
5ad6ced95c
Introduce a tool to migrate from PHPExcel to PhpSpreadsheet 2016-11-28 00:13:57 +09:00
Adrien Crivelli
e6bbc4bd25
Convert all line ending to unix style 2016-11-27 15:45:15 +09:00
Adrien Crivelli
f74fde155f
Remove non-obvious BaseReader's dependency
BaseReader called `isValidFormat` despite it doesn't require it to be
implemented. Instead we replaced `isValidFormat` by a proper implementation
of `canRead` in each classes. This also remove the semantic amibguity between
those two methods.

FIX #32
2016-11-27 14:29:25 +09:00
Green Wang
8c58385d6c
Fix cant get right format chinese date format error
modify preg expression in NumberFormat.php

[DBNum1][$-804]yyyy"年"m"月"d"日";@
[DBNum1][$-804]yyyy"年"m"月";@
[DBNum1][$-804]m"月"d"日";@

FIX #44
2016-11-27 13:39:45 +09:00
tomaszsita
939f24ecb4
Calculate column auto width for merged cells (if horizontal, 1-column wide merge only)
This is to fix the situation when cells merged vertically are ignored in columns auto size calculations.

I also removed $calculateMergeCells param as it wasn't used and I believe the only situation when you
want to calculate the width of merged columns has been covered here (and there's no reason to not calculate it).

FIX #46
2016-11-25 17:54:56 +09:00
Adrien Crivelli
6d8ba6f7f0
Revert references to classes in global namespace
Some references to classes were incorrectly assumed to be a reference
to self, whereas they were references to classes in global namespace
outside of this project.

FIX #37
2016-11-16 22:43:44 +09:00
Alexander Kurilo
1df5f97a5b Require GD for saving images in xls
GD is implicitly required for saving images anyway, this exception when
it's not loaded simply gives more information on what to do if the
execution flow reaches a places that depends on a function from GD.
2016-11-16 22:23:09 +09:00
Alexander Kurilo
408da0c17a Make HTML checks more strict 2016-11-16 22:21:30 +09:00
Roland Haeder
4b4831be07 Catch some invalid parameter (may come from damaged file) and throw exception. (#39)
Signed-off-by: Roland Häder <roland@mxchange.org>
2016-11-16 22:17:43 +09:00
Roland Haeder
296cc69f0a Avoid array_key_exists(), unless we need to check NULL values (#35)
```php
<?php
$array = array(
	'str'  => 'foo',
	'num'  => 12345,
	'null' => NULL,
);

print intval(isset($array['null'])) . PHP_EOL;
print intval(array_key_exists($array['null'])) . PHP_EOL;
print intval(isset($array['num'])) . PHP_EOL;
print intval(array_key_exists($array['num'])) . PHP_EOL;
print intval(isset($array['str'])) . PHP_EOL;
print intval(array_key_exists($array['str'])) . PHP_EOL;
```

Only for this special case, you need array_key_exists(), else avoid it as it is
painfully slow and hurts your performance.

Signed-off-by: Roland Häder <roland@mxchange.org>
2016-10-26 20:01:11 +09:00
Adrien Crivelli
fb1d280e82
Remove all references to "hack" from the source code
Remove the term "hack" from the source code to prevent it
from being flagged by malware scanners and audit tools (such as
the very popular myJoomla.com for Joomla sites)
2016-10-24 20:24:56 +09:00
Phil Taylor
ec9e548153
Remove the term "hacked by" from the source code
Remove the term "hacked by" from the source code to prevent it
from being flagged by malware scanners and audit tools (such as
the very popular myJoomla.com for Joomla sites)
2016-10-24 19:50:13 +09:00
Adrien Crivelli
02e233634a
All constants are uppercase #25 2016-10-07 09:52:04 +09:00
Max
d84d9ba730 Fix spelling and constant name used as default argument (#25) 2016-10-07 08:16:13 +09:00
Adrien Crivelli
e2e982f98a
Rename OOCalc and OpenDocument into Ods
FIX #6
2016-10-06 21:07:57 +09:00
Adrien Crivelli
4337de4930
Rename Excel5 into Xls
FIX #4
2016-10-06 20:49:41 +09:00
Adrien Crivelli
39b55ded30
Rename Excel2007 into Xlsx
FIX #5
2016-10-06 20:39:10 +09:00
Adrien Crivelli
2b41bdbf4e
Loosen type checking to allow both use-cases
Previously it crashed when loading an file containing conditional formatting

FIX #21
2016-10-05 14:06:39 +09:00
CrazyBite
c94539c86c
Fix reading print area with sheet name containing a comma 2016-10-03 17:18:38 +09:00
Balint Kovacs
c99ec67d68
Fix hyperlink reading in ODS files 2016-10-03 07:21:28 +09:00
Adrien Crivelli
e95a267034
Apostrophes in sheet names prevented save
If a sheet name included an apostrophe and the sheet had print area
defined then the spreadsheet could not be saved because the cell
coordinates were mangled, eg:
'Fiche d''action'!$A$1:$N$19

wrongly became:
'Fiche d'$A$1:$N$19
2016-10-02 20:21:13 +09:00
Enyby
d791a0bbeb
Fix signature detection on Excel2003XML
Signature can be with single quotes:
```
<?xml version='1.0'?>
<?mso-application progid='Excel.Sheet'?>
```
2016-10-02 17:44:17 +09:00
Enyby
102c19356f
Fix bug with convert int
Some bugged file have $data less from four bytes. This fix append zero bytes if it happens.

It is prevent errors on access to need indexes.
2016-10-02 17:40:26 +09:00
Сергей Симонян
5a3e2435c3
Fix undefined index exception in readRow() 2016-10-02 17:24:59 +09:00
Adrien Crivelli
ae1b85f961
Fix code style 2016-10-02 15:21:52 +09:00
Adrien Crivelli
8c4c11346b
Fix unit tests for DATEDIF()
Leap years where not properly taken into consideration
2016-10-02 14:46:11 +09:00
Adrien Crivelli
8061f7516e
Rename SECONDOFMINUTE into SECOND for consistency 2016-10-02 09:43:13 +09:00
Adrien Crivelli
75c34f2694
Rename MINUTEOFHOUR into MINUTE for consistency 2016-10-02 09:41:20 +09:00
Adrien Crivelli
382d15a5c3
Rename DAYOFWEEK into WEEKDAY for consistency 2016-10-02 09:35:50 +09:00
Adrien Crivelli
9629151e45
Rename WEEKOFYEAR into WEEKNUM for consistency 2016-10-01 22:44:33 +09:00
Adrien Crivelli
23fbc845dd
Fix unit tests for WEEKNUM() 2016-10-01 22:33:12 +09:00
Сергей Симонян
1a2a6816fb
Fix undefined index exceprtion in readRow()
It's possible undefined index exception in $this->mapCellXfIndex.
2016-09-09 00:42:24 +09:00
Marcus Bointon
39ea4eea98 Don't truncate to 64k in mb_str_replace 2016-09-05 23:23:49 +02:00
MarkBaker
fb2edfdacf Merge branch 'develop' of https://github.com/PHPOffice/PhpSpreadsheet into develop
# Conflicts:
#	src/Autoloader.php
2016-08-31 21:58:08 +01:00
MarkBaker
fae27a6d63 As iconv is now enabled by default in PHP, make it a requirement, and modify strig functions to use it where appropriate 2016-08-31 21:52:42 +01:00
Adrien Crivelli
47cde0dadc
Introduce vendor prefix PhpOffice to namespace 2016-09-01 02:20:47 +09:00
Adrien Crivelli
2922a13764
Reorganize code samples
This introduce a helper class that should be used to log things,
avoiding a lot of boilerplate code.

Also all output are made in /tmp folder instead of beside the script
itself. This is because there is a high chance that the folder containing
the script is not writtable by webserver. So using the /tmp folder
makes it more likely to works in a variety of setup.
2016-09-01 01:17:13 +09:00
Adrien Crivelli
c3bb4245b3
Register autoload as the first in the list
Yii framework v1.1 has it's own autoloader and its autoloader throws
an error, when it can't find class. When this library initializes, it
register its own autoloader, but places it at the end of autoload
queue. So when I use library with Yii 1.1, I just face an error:
`include(PHPExcel_Shared_String.php): failed to open stream: No such file or directory`
because Yii's autoloader runs first and tries to include class file
directly.

Registering our autoloader first avoid this.
2016-08-30 00:51:51 +09:00
Nikolay Ivanov
98e00e8843
iconv illegal character fix 2016-08-26 22:52:47 +09:00
Adrien Crivelli
67d5263004
Fix code style 2016-08-26 22:48:57 +09:00
Synchro
c50814ac4e
Remove unused local var, function returns void anyway 2016-08-26 22:44:55 +09:00
Synchro
30e0451bc3
Fix duplicate array keys in ptg indices
Reference: http://read.pudn.com/downloads173/sourcecode/delphi_control/805790/DevExpress/DevExpressComm/cxExcelConst.pas__.htm
2016-08-26 22:41:14 +09:00
Synchro
16a8162a14
Fix duplicate array key 2016-08-26 22:32:55 +09:00
Carlos Montiers
6acd403251
In memory gzip cache method use max compression 2016-08-26 22:09:46 +09:00
Carlos Montiers
d8850176a1
php://temp maxmemory must be expressed in bytes 2016-08-26 22:07:49 +09:00
Adrien Crivelli
91417ad1c3
Delete debug and commented out code 2016-08-26 18:08:26 +09:00