Commit Graph

342 Commits

Author SHA1 Message Date
Adrien Crivelli 440bfe637f
Don't use short list syntax to keep PHP 5.6 compatibility 2017-10-01 21:50:40 +09:00
Adrien Crivelli 4fd8e742e7
Upgrade to PHP-CS-Fixer 2.7 2017-10-01 20:07:04 +09:00
Adrien Crivelli 50a0ec58af
Merge all examples together
Closes #17
2017-10-01 17:48:59 +09:00
Adrien Crivelli 29208e9d99
Remove boilerplates
Because it is a budren to maintain and LGPL 2.1 does not require
them, but only suggest them:

> To apply these terms, attach the following notices to the library.
> It is **safest** to attach them to the start of each source file
> to most effectively convey the exclusion of warranty; and each
> file **should** have at least the "copyright" line and a pointer
> to where the full notice is found.

https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html#SEC4
2017-09-30 22:12:28 +09:00
Maxim 810f174d6e Fix INDEX() function when rows count less than row number (#233) 2017-09-30 12:13:20 +09:00
Adrien Crivelli 360db8dbcd
Upgrade to mPDF 7.0+
Closes #144
2017-09-29 11:17:08 +09:00
GreatHumorist 2abe56b946 Support missing attribute `r` in `c` node when reading xlsx
When describing a cell, the cell reference (r="A1") is optional.
When not present, we should just increment the index of the last processed row.

Fixes #201 
Closes #225
2017-09-22 14:49:38 +09:00
GreatHumorist 7aa6233185
Added xml reader hyperlink support
Closes #223
2017-09-22 14:40:47 +09:00
GreatHumorist 0477e6fcfe In Xml reader throw exception in case of invalid XML (#222)
When the xml file is not a standard xml file, the `simplexml_load_string` will return false, this will cause an error on "$xml->getNamespaces(true);" . So instead of showing the error, we throw an exception.
2017-09-20 14:20:12 +09:00
Adrien Crivelli febbe87172
Remove unused variable 2017-09-12 01:06:48 +09:00
all-lala 81c1b14048
Re-use original palette color when possible
This is to prevent color changing when copy/pasting xls files written by
PhpSpreadsheet to another file.

Closes #218
2017-09-11 14:28:49 +09:00
Adrien Crivelli 097d349e9c
Fix code style 2017-09-11 13:41:44 +09:00
MarkBaker 77b3c12fbc More perforan version of stringFromColumnIndex that takes advantage of the PHP 5.3 modified ternary 2017-09-10 22:51:05 +01:00
MarkBaker d576855031 Merge branch 'develop' of https://github.com/PHPOffice/PhpSpreadsheet into develop 2017-09-10 22:27:50 +01:00
Adrien Crivelli 1cf119dd0b
Escape control characters in cell values
Control characters in cell values are automatically escaped without
the need to excplicitly call `StringHelper::buildCharacterSets()` beforehand.

Fixes #212
2017-09-09 19:29:08 +09:00
Adrien Crivelli e558028eb7
Remove extraneous parameter 2017-09-09 18:23:07 +09:00
Davis Devasia 41a1aa9ede Uncommented the increment of $imageCounter (#205)
The static variable $imageCounter previously had a constant value of 0 throughout the program as it was never being modified, because it was commented out by mistake.

Now it increments every time a new drawing is being instantiated.

This also fixed a problem when multiple images of same name in the same worksheet are incorrectly displayed.

Fixes #204
Closes #205
2017-09-08 20:43:12 +02:00
Adrien Cohen 5dd18586a2
Fix colIndex read as signed int16 for relative ref
As described in http://interoperability.blob.core.windows.net/files/MS-XLS/[MS-XLS].pdf
a relative column reference can be between -255 +255 and not -127 + 127, the column
index should be read as a signed int16.

References:

- 2.2.2.2.1 Value Class / page 81
- 2.5.198.88 PtgRefN / page 815
- 2.5.198.111 RgceLocRel / page 828

Fixes #211
Closes #214
2017-09-09 03:34:52 +09:00
Adrien Crivelli 1c5db4e170
Standardize keys used for styling
Array keys used for styling have been standardized for a more coherent experience.
It now uses the same wording and casing as the getter and setter methods.

Closes #189
2017-09-09 02:56:23 +09:00
CrazyBite e6c95bf9b0
Added fillColor for chart plot series
For now it is only to write to Xlsx

Closes #158
2017-09-08 02:52:27 +09:00
Bill Blume 2761773b3d
Merge data-validation collections to reduce the final file size
Closes #131
Closes #193
2017-09-08 02:27:18 +09:00
Vladimir Reznichenko 004a192922 SCA with Php Inspections (EA Extended)
Closes #208
2017-09-07 19:11:48 +02:00
Adrien Crivelli c8089f97d8
Prevent notice when no rules
Closes https://github.com/PHPOffice/PHPExcel/pull/1287
2017-08-17 12:55:27 +02:00
Adrien Crivelli cf2c0e51f4
Fix variadic docblocks 2017-08-03 12:59:52 +02:00
Adrien Crivelli 4a47a32953
Code style partially according to Scrutinizer 2017-08-03 12:03:24 +02:00
Adrien Crivelli 5520bf5c99
Fix wrong return type
Closes https://github.com/PHPOffice/PHPExcel/pull/1262
2017-07-30 21:29:37 +02:00
Ben 0b03571394 removed wrong parameter hint (#187) 2017-07-17 16:07:17 +02:00
Mikkel Paulson 1853aaac79 Add option to suppress validation of sheet titles (#186)
Add option to suppress validation of sheet titles

Based on a "lowest common denominator" approach to compatibility,
we will continue to enforce a 31-character limit for sheet titles.
However, this limit should not be enforced when loading an existing
file.

Added a new optional parameter to Worksheet::setTitle() and
Worksheet::setCodeName() to suppress validation and massaging,
based on the premise that existing files should be given a
best-effort approach to loading and parsing. Unfortunately, it's
not possible with the current architecture to prevent users from
making use of this functionality, aside from with a strongly-worded
warning.

Added test coverage. I didn't see any existing unit tests of the
Worksheet class, so I created a new test to cover these methods.

Fixes #176
2017-07-14 10:53:13 +02:00
Kifni Taufik Darmawan 2a6ab1776c
HTML reader supports text and background color from inline CSS, for `td` and `th` element
Closes #180
2017-06-23 11:28:17 +02:00
Mewes Kochheim 6aae764920
Use default values when writing validation in Xls
Fixes the PHP 7.1 bug reported over at PHPOffice/PHPExcel#1110
The behavior should not change since the default value used should behave the same way as the string value in earlier PHP versions.

Fixes a return type in the doc block of IReader.

Closes #165
2017-06-20 10:48:45 +02:00
Adrien Crivelli 44e2461b7b
Refactor `define()` as class constants
This will improve interoperability with other projects and simplify our code.

Closes #157
2017-05-19 23:49:12 +02:00
Zharikov Viktor 07455d24f6
Make global usage of `use` instead of FQCN
Closes #78
Closes #147
2017-05-18 00:10:16 +02:00
azine.me 77199c9877
Ods writer repects PreCalculateFormulas flag
The OpenDocument Writer did not respect the "preCalculateFormulas" flag that
can be set to speed up saving process, now it does.

Closes #142
2017-05-07 17:07:27 +02:00
MarkBaker 4ccd0b95da Merge branch 'develop' of https://github.com/PHPOffice/PhpSpreadsheet into develop 2017-05-04 14:31:40 +01:00
Adrien Crivelli 870d8640f5
Enforce writer parts parent to be concrete writer
We used to type hint against IWriter for writer part parent, but this
was not respected in writer part who often coded against the implementation
instead of the interface. With this change we make it a requirement for
writer parts to use their respective writer implementation instead of an
interface. This give legitimate access to all `BaseWriter` methods amongst
other things.
2017-04-21 14:46:17 +09:00
Markus Lanthaler 3ee9cc5ce6
Infer CSV delimiter if it hasn't been set explicitly
Closes #141
2017-04-20 17:02:03 +09:00
Adrien Crivelli 0bd3a9c60a
HHVM compatibility fix 2017-04-16 16:20:33 +09:00
Adrien Crivelli 75d3bdb016
Declare arguments as required when they are
Closes #110
2017-04-16 14:25:28 +09:00
Adrien Crivelli 06ca8f9b04
Leverage type hinting to assert array parameters 2017-04-16 14:25:28 +09:00
Adrien Crivelli 033a4bdad5
Remove default values for function that should not have any default
Having default values made it harder for end-user to figure out whether
it the arguement had to be supplied or not. Ommitting the argument may
lead to hard to debug issues, and is overall not a good idea.

Closes #110
2017-04-16 14:25:28 +09:00
Ivan Bragin 67581a0dd5 Fallback from iconv to mbstring for encoding convertion
In some exotic environnement (IBM AIX) it may happens that `//TRANSLIT` is not supported. In that case iconv would return false. We can easily identify the case and fallback on mbstring instead. That should give correct result.

Closes #135
Closes #136
2017-04-14 20:54:37 +09:00
simivar 8fd1825d39 Throw exception in XLS with columns or rows overflow (#138)
This is a hard limit of the BIFF format that cannot be worked around,
so it is best to throw exceptions than silently discard data or generate
corrupted files.
2017-04-14 20:45:53 +09:00
Adrien Crivelli fd9c925a7b
Refactor CachedObjectStorage to PSR-16
This drop a lot of non-core features code and delegate their maintainance
to third parties. Also it open the door to any missing implementation
out of the box, such as Redis for the moment.

Finally this consistently enforce a constraint where there can be one and
only one active cell at any point in time in code. This used to be true for
non-default implementation of cache, but it was not true for default
implementation where all cells were kept in-memory and thus were never
detached from their worksheet and thus were all kept functionnal at any
point in time.

This inconsistency of behavior between in-memory and off-memory could
lead to bugs when changing cache system if the end-user code was badly
written. Now end-user will never be able to write buggy code in the first
place, avoiding future headache when introducing caching.

Closes #3
2017-04-14 16:56:27 +09:00
Adrien Crivelli c2b38b0ee0
Error style of data validation was incorrectly written to Xls
We use to write the wrong property to file, leading to a warning
in PHP 7.1 since the `switch` never matched anything and the variable
was left as a string instead of as an int.

Closes https://github.com/PHPOffice/PHPExcel/issues/1110
2017-04-12 12:40:28 +09:00
Kurounin b01671213a
Removed double un-escaping when reading CSV
Removed "unescape enclosure functionality", since the unescaping is already handled by fgetcsv,
and performing the unescaping again would actually result int the text from the cell being read wrong.

As an example try parsing the folowing CSV:

```
"<img alt="""" src=""http://example.com/image.jpg"" />"
```

With the additional unescaping it would have ended up as:

```
<img alt=" src="http://example.com/image.jpg" />
```

instead of the correct:
```
<img alt="" src="http://example.com/image.jpg" />
```

Fixes https://github.com/PHPOffice/PHPExcel/pull/1171
2017-04-03 11:57:10 +09:00
Paolo Agostinetto fd83c191ea MATCH function behavior when third parameter is equal to 1 or -1
Fixes #51 
Closes #122
2017-04-01 12:36:02 +09:00
Galkin Ivan 7fd5eefe04 Add empty cell condition for conditional formatting (#128) 2017-04-01 12:12:31 +09:00
MarkBaker 08ced34dfd SUBTOTAL options for ignoring hidden cells 2017-03-19 14:17:20 +00:00
Paolo Agostinetto 9767112b23 Settings: deleted libxml_disable_entity_loader() calls (#113)
Settings: deleted libxml_disable_entity_loader() calls since they're not necessary.
Prevent setLibXmlLoaderOptions() and getLibXmlLoaderOptions() to call the libxml_disable_entity_loader() function which alter the global state of libxml.
See the discussion here https://github.com/PHPOffice/PhpSpreadsheet/issues/74
2017-03-12 22:00:46 +09:00
Adrien Crivelli b669d48f2f
Un-deprecate `getCalculatedValue()`
Those were deprecated a long time ago in 59932b0cac
but their replacement seems to have never been added. 5 years later the
best solution is to un-deprecate them and if someday their replacement are
actually added, then we can re-deprecate them properly.

Closes #22
2017-03-11 12:16:07 +09:00
Adrien Crivelli ea5663bc00
Drop support for PclZip
Over the years PclZip became a maintenance problem. It's code base
is old and the official project seems to have died out. ZipArchive
is now more commonly available and offer an easier and more complete
API. So PclZip was dropped in order to focus our efforts on what matters.

Closes #18
2017-03-11 11:48:46 +09:00
ankitm123 f99eb8dbba Cloned worksheet updates were reflected on original (MemoryDrawing)
We need to make note of two things:

- The old code was trying to clone an objectArray, and hence was performing a shallow copy of memoryDrawing objects (the __clone magic function was not getting invoked).
Instead, if one loops over the objectArray, and then clones the individual memory drawing objects, then the __clone function for the MemoryDrawing object is invoked.

- The __clone function for memory drawing was using the clone keyword which does not deal with circular references (Since memoryDrawing object had references to worksheet object, it was encountering an infinite loop). However, serializing and unserializing objects deals with circular references pretty well. 

Fixes #92 
Closes #106
2017-03-06 22:58:19 +09:00
Adrien Crivelli 5fce89e76b Merge pull request #108 from redokun/fix-105
Ods writer: add support for basic text styling (Fix #105)
2017-03-06 11:39:50 +09:00
Christian Schmidt 3560f11935
Replace mbStrReplace() with str_replace()
By design, UTF-8 allows any byte-oriented substring searching algorithm,
since the sequence of bytes for a character cannot occur anywhere else
([source](https://en.wikipedia.org/wiki/UTF-8#Advantages_3)).

So `str_replace()` also works for UTF-8-encoded strings, assuming that
the input strings are valid UTF-8 strings. The previous implementation
of mbStrReplace() did nothing to detect invalid strings.

Also, `str_replace()` does not support [Unicode equivalence](https://en.wikipedia.org/wiki/Unicode_equivalence),
but nor do the other `mb_string` functions, and nor does `=SUBSTITUTE()` in Excel
(tested on Excel for Mac version 15.19.1, Excel 2016 for Windows and LibreOffice 5.1).

Closes #109
2017-03-06 11:33:06 +09:00
Paolo Agostinetto 93b5337bda Writer\Ods\Content: Fix CS 2017-03-04 17:18:18 +01:00
Paolo Agostinetto 4efda2a512 Ods\Writer\Content: added support for xr styles (bold, italic, font family, font size, underline, bg color) 2017-03-04 17:18:18 +01:00
Paolo Agostinetto e60897ae5f Writer\Ods\Content: all variable names to camelcase 2017-03-04 17:18:18 +01:00
Paolo Agostinetto 8600e63123 Writer\Ods\Content: added docblock and removed unnecessary method parameter 2017-03-04 17:18:18 +01:00
Paolo Agostinetto 13bf3d4361 Writer\Ods\Content: making use of the "use" statement rather than explicit namespaces 2017-03-04 17:18:18 +01:00
Adrien Crivelli 0d1ff5b95f
Better exception message for new Excel functions
Closes https://github.com/PHPOffice/PHPExcel/issues/1136
2017-02-28 10:50:22 +09:00
Adrien Crivelli f7e1aa3c41 Merge pull request #98 from redokun/fix-85
Ods reader: various fixes and unit tests added (bug #85)
2017-02-25 16:51:10 +09:00
ankitm123 5df662e1a3
PHP 7.1 compatibility
Closes #96
Closes #101
Closes #102
2017-02-25 16:35:37 +09:00
Mingc a1a03428e7 Decode comment text in xls reader (#99) (#100)
Previously, xls reader did not decode comment properly if they used UTF-8.

References:

* [The Microsoft Excel File Format](https://www.openoffice.org/sc/excelfileformat.pdf): From BIFF8 on, strings are always stored using UTF-16LE text encoding. The character array is a sequence of 16-bit values. Additionally it is possible to use a compressed format, which omits the high bytes of all characters, if they are all zero
* [Apache POI](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/poi/3.7/org/apache/poi/util/StringUtil.java#StringUtil.readUnicodeString%28org.apache.poi.util.LittleEndianInput%29): is16BitFlag
2017-02-23 11:42:52 +09:00
Paolo Agostinetto 529617c77d Fixed CS errors 2017-02-20 22:14:07 +01:00
Paolo Agostinetto f3c62b615e Merge remote-tracking branch 'upstream/develop' into fix-85 2017-02-20 21:13:03 +01:00
Paolo Agostinetto 9785f926c1 php-cs run: fixed code style for new/changed files 2017-02-20 21:05:25 +01:00
Paolo Agostinetto c954eddf57 Ods reader: fix sheet count and added a test for sheet names 2017-02-20 21:02:04 +01:00
Paolo Agostinetto b50ca6e27c Ods reader: added/fixed PHPDoc and classes without namespace 2017-02-20 21:00:42 +01:00
Paolo Agostinetto 4cf7beef31 Ods reader: few readability tweaks 2017-02-18 21:10:06 +01:00
Paolo Agostinetto 1667056515 IReadFilter interface: fixed docblocks 2017-02-18 21:02:33 +01:00
Paolo Agostinetto 6d6353c0f1 Ods reader: fix reading of cells with hyperlinks 2017-02-18 20:59:14 +01:00
Paolo Agostinetto e46c298fe1 Ods reader: method loadIntoExisting() now uses DOMDocument to parse content 2017-02-18 20:38:10 +01:00
Adrien Crivelli 7b90bb9394
Drop checks for mbstring existence
Since mbstring is now a hard dependency enforced by composer, it is
no longer necessary to check for its presence and implement fallbacks.
2017-02-16 11:56:22 +09:00
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