-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support writing to resource handles in all IWriter implementations #1292
Conversation
Just wanted to throw in that this would be super useful since it would allow folks to generate XLSX and other formats without needing write access to a temp directory anymore. If there's anything we can do to help nudge this along, please say the word, we're happy to put in the work on it. ❤️ |
This seems to be a move in the right direction. @basbl, you created this PR as a draft. What else did you plan to do before completion ? |
Mainly just gathering feedback and fixing the build, @PowerKiKi |
6a0c583
to
52025c5
Compare
Let us know when you feel it can be reviewed, or if you need help from the community for something. Also, feel free to add typings in existing code when it is not breaking, and definitely add them for all new code. |
52025c5
to
195409d
Compare
The built-in ZipArchive class does not have the ability to accept streams. This means that we would always have to write the zip to disk. The ZipStream library does offer support for writing to streams.
195409d
to
31066b4
Compare
31066b4
to
b60b1d2
Compare
@PowerKiKi I could use some help with getting the final Scrutinizer issues resolved. There's also a false positive in there like: IssueId: 42375536 Message: It seems like |
src/PhpSpreadsheet/Writer/Csv.php
Outdated
@@ -126,6 +132,8 @@ public function save($pFilename) | |||
} | |||
|
|||
// Close file | |||
rewind($fileHandle); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why did you choose to rewind here and in other writers ?
Thanks ! I completed it a bit and merge it. |
Thanks a bunch! |
### Added - Support writing to streams in all writers [#1292](#1292) - Support CSV files with data wrapping a lot of lines [#1468](#1468) - Support protection of worksheet by a specific hash algorithm [#1485](#1485) ### Fixed - Fix Chart samples by updating chart parameter from 0 to DataSeries::EMPTY_AS_GAP [#1448](#1448) - Fix return type in docblock for the Cells::get() [#1398](#1398) - Fix RATE, PRICE, XIRR, and XNPV Functions [#1456](#1456) - Save Excel 2010+ functions properly in XLSX [#1461](#1461) - Several improvements in HTML writer [#1464](#1464) - Fix incorrect behaviour when saving XLSX file with drawings [#1462](#1462), - Fix Crash while trying setting a cell the value "123456\n" [#1476](#1481) - Improved DATEDIF() function and reduced errors for Y and YM units [#1466](#1466) - Stricter typing for mergeCells [#1494](#1494) ### Changed - Drop support for PHP 7.1, according to https://phpspreadsheet.readthedocs.io/en/latest/#php-version-support - Drop partial migration tool in favor of complete migration via RectorPHP [#1445](#1445) - Limit composer package to `src/` [#1424](#1424)
Looking for feedback
This is:
Checklist:
Why this change is needed?
Some writers already had support for writing to resource handles passed through
IWriter::save
. The ones preventing this from becoming a supported feature among all of them were the XLSX and the ODS writers which are zipped collections of files and\ZipArchive
does not support writing to streams.By taking on an extra dependency, namely
maennchen/zipstream-php
, this could be supported.