Commit Graph

2777 Commits

Author SHA1 Message Date
Owen Leibman ae80c12ef0 CSV Reader Enhancements
This PR came about as I pondered how feasible it was to change the default escape character from backslash to null string, since the latter emulates Excel's own actions. Also, surveying issues relating to CSV, it seems that people are often in a situation where the current defaults aren't optimal for them (e.g. they are in a region where semicolon rather than comma is a better default delimiter). My case and that case can both be handled by methods after a reader is constructed. However, the issues also show that many use `IOFactory::load` rather than `new Csv()`, and the methods to affect the defaults are not available in that case.

Adding a static callback that can be invoked by the constructor addresses all these problems. This can be set as part of the user application's normal initialization, and no special attention needs to be paid to CSV loads thereafter, no matter how they are invoked.

This also makes it feasible to use 'guess' as inputEncoding, by providing a new setFallbackEncoding (default CP1252) method to use if none of the heuristic tests pass. There was already the ability to guess the encoding before `$reader->load()`, but not before `IOFactory::load`.

Almost all typehints in Reader/Csv and Reader/Csv/Delimiter are now part of the function signature rather than in the DocBlock. The exceptions are one method in Delimiter which uses a `resource` parameter, and the `canRead` and `load` methods, which must match the signature in IOFactory. I will look into changing those later.

The Csv Reader tests are moved into their own directory. All Phpstan baseline entries involving Csv Reader are eliminated.
2021-05-16 06:05:02 -07:00
Adrien Crivelli e5185eab0c
Avoid memory leak by allowing to release `Style` objects (bis)
Fixes #2092
2021-05-16 13:54:13 +09:00
Adrien Crivelli 5dd00b1b1a
Avoid memory leak by releasing image resources
This also better support image cloning with a proper
clone of the GD resource.

#2092
2021-05-16 12:39:09 +09:00
Adrien Crivelli 50683e6068
Avoid memory leak by allowing to release `Style` objects
Fixes #2092
2021-05-16 12:39:09 +09:00
Adrien Crivelli 09b979defa
Avoid memory leak by registering shutdown function exactly 1 time
Fixes #2092
2021-05-16 12:39:08 +09:00
MarkBaker b01a485f4f A couple of extra unit tests 2021-05-14 14:35:23 +02:00
MarkBaker 061744c6bd PHPCS Fixes 2021-05-14 14:35:23 +02:00
MarkBaker 924cfe2e7b Fix a couple of methods that call mathods that we've modified 2021-05-14 14:35:23 +02:00
MarkBaker 5173eaa302 More grouping and renaming 2021-05-14 14:35:23 +02:00
MarkBaker fb251eb6ab Fix Exception cases to always use the PhpSpreadsheet Calculation Exception 2021-05-14 14:35:23 +02:00
MarkBaker 71bc7e6f89 Final phase of aggregating the MathTrig function implementations into commonly-themed groups 2021-05-14 14:35:23 +02:00
Adrien Crivelli ac5b96d0f1
Avoid `func` prefix in function name
As decided in
https://github.com/PHPOffice/PhpSpreadsheet/pull/1954#issuecomment-809824463
2021-05-14 20:47:17 +09:00
Owen Leibman 4bd506b414 Minor Improvement to Test Cleanup DateTime
Permit spreadsheet allocated as private member in test class to be garbage-collected after test completion.
2021-05-14 10:53:27 +02:00
Owen Leibman efe8f49123 Minor Improvement to Test Cleanup LookupRef
Permit spreadsheet allocated as private member in test class to be garbage-collected after test completion.
2021-05-14 10:30:49 +02:00
Owen Leibman 7aa83eb72f Missed One
Correct one test.
2021-05-14 09:54:24 +02:00
Owen Leibman 4df184320a Minor Improvement to Test Cleanup MathTrig
Permit spreadsheet allocated as private member in test class to be garbage-collected after test completion.
2021-05-14 09:54:24 +02:00
MarkBaker 9204d2d6b3 Updates to ensure that we're using the correct Namespaced exception 2021-05-13 16:01:30 +02:00
MarkBaker 4b17188250 That should be most of the trig implementation functions grouped and methods renamed for clarity 2021-05-13 16:01:30 +02:00
MarkBaker 0c26333e96 Start Grouping the trig functions related to sine and cosine into one class each, and rename methods 2021-05-13 16:01:30 +02:00
MarkBaker fe5fde26bb Remove a test file that I'd accidentally added 2021-05-13 16:01:30 +02:00
MarkBaker 5715bf4644 Next wave of grouping for the refactored MathTrig functions into small group classes, and renaming of methods 2021-05-13 16:01:30 +02:00
MarkBaker 22468a7965 Some initial grouping of the refactored MathTrig functions into small group classes, and renaming of methods 2021-05-13 16:01:30 +02:00
oleibman 4b82920120
Merge pull request #2036 from oleibman/mpdfcache
Mpdf Caching
2021-05-12 13:51:30 -07:00
oleibman a5b7b3074a
Merge branch 'master' into mpdfcache 2021-05-12 13:23:30 -07:00
MarkBaker 9b34f8746b Use correct Exception, ensure that Shared\Date is referenced by a synonym to ensure clarity, and ensure case-sensitivity for class references 2021-05-12 17:17:25 +02:00
MarkBaker 765d4586ae Renaming the last of the DateTime implementation methods 2021-05-12 17:17:25 +02:00
MarkBaker f7a07747fd More method renaming 2021-05-12 17:17:25 +02:00
MarkBaker aa3269a863 Some method renaming 2021-05-12 17:17:25 +02:00
MarkBaker 97472ae383 Fix AutoFilter dat break referencing the old Now::evaluate() class/method, rather than the new Current::now() 2021-05-12 17:17:25 +02:00
MarkBaker cd667500e0 Group some of the newly extracted Excel DateTime function implementations into groups of related functions with appropriate and meaningful class names, and rename the public methods to be more descriptive of their purpose 2021-05-12 17:17:25 +02:00
MarkBaker 7903827475 Deprecation notice in ChangeLog for the old Excel funcion implementations 2021-05-12 09:55:01 +02:00
oleibman 6fb3d840c2
Merge pull request #2049 from xandros15/#984
#984 Add support notContainsText for conditional styles in xlsx
2021-05-11 14:56:15 -07:00
oleibman d5492ac8ed
Merge branch 'master' into #984 2021-05-11 14:44:33 -07:00
Tanguy De Taxis d08653433c fr locale - Add JOURS function (DAYS equivalent) 2021-05-11 14:49:26 +02:00
Owen Leibman 9c43d5f1b7 Xlsx Writer Formula with Bool Result of False
Fix for #2082. Xlsx Writer was writing a cell which is a formula which evaluates to boolean false as an empty XML tag. This is okay for Excel 365, but not for Excel 2016-. Change to write the tag as a value of 0 instead, which works for all Excel releases. Add test.
2021-05-11 13:48:38 +02:00
xandros15 bb11378fca #984 fix php-cs-fixer warnings 2021-05-11 12:44:40 +02:00
MarkBaker e5bfc3c899 Add phpcs version compatibility check to pipeline 2021-05-10 22:55:32 +02:00
Owen Leibman 9fed8d87f6 Two Problems with Sample19
19_NamedRange.php was not changed to use absolute addressing when that was introduced to Named Ranges. Consequently, the output from this sample has been wrong ever since, for both Xls and Xlsx.

There was an additional problem with Xls. It appears that the Xls Writer Parser does not parse multiple concatenations using the ampersand operator correctly. So, `=B1+" "+B2` was parsed as `=B1+" "`. I believe that this is due to ampersand being treated as a condition rather than an operator; `A1>A2>A3` isn't valid, but `A1&A2&A3` is. My original PR (#1992, which I will now close) only partially resolved this, but I think moving ampersand handling from `condition` to `expression` is fully successful.

There are already more than ample tests for Named Ranges, so I did not add a new one for that purpose. However, I did add a new test for the Xls parser problem.
2021-05-09 15:41:36 -07:00
MarkBaker a0719d8dd4 Use modification time from properties when saving Excel5 2021-05-09 21:03:23 +02:00
MarkBaker 2ddb23574e PHPCS Fix 2021-05-08 22:50:36 +02:00
MarkBaker 9a5a630e3f Check against font attributes 2021-05-08 22:50:36 +02:00
MarkBaker bb572f757f Should fix phpstan 2021-05-08 22:50:36 +02:00
MarkBaker 60e6a59ff2 Additional refactoring 2021-05-08 22:50:36 +02:00
MarkBaker 13ec163333 phpstan appeasement 2021-05-08 22:50:36 +02:00
MarkBaker 5d6b072fb0 More Minor tweaks 2021-05-08 22:50:36 +02:00
MarkBaker e71c2e46d0 Minor style tweaks 2021-05-08 22:50:36 +02:00
MarkBaker 351804335c Refactor Gnumeric Style Reader into a separate dedicated class 2021-05-08 22:50:36 +02:00
Mark Baker d2e6db71fa
Lookup functions additional unit tests (#2074)
* Additional unit tests for VLOOKUP() and HLOOKUP()
* Additional unit tests for CHOOSE()
* Unit tests for HYPERLINK() function
* Fix CHOOSE() test for spillage
2021-05-07 23:40:30 +02:00
Nathan Dench f28eea7341 Use named regex groups and constants for regex strings 2021-05-07 14:34:05 +02:00
Nathan Dench df01db58ad Remove complexity from AddressHelper::convertToR1C1 2021-05-07 14:34:05 +02:00