-
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
IOFactory not loading all columns of csv file when header row missing #2840
Comments
oleibman
added a commit
to oleibman/PhpSpreadsheet
that referenced
this issue
May 19, 2022
Fix PHPOffice#2840 (and also PHPOffice#2839 but that's Q&A, not an issue). Csv Reader does not populate cells which contain null string. This PR provides an option for the reader to store null strings as it does with any other string.
7 tasks
oleibman
added a commit
that referenced
this issue
May 21, 2022
MarkBaker
added a commit
that referenced
this issue
Jul 9, 2022
Note that this will be the last 1.x branch release before the 2.x release. We will maintain both branches in parallel for a time; but users are requested to update to version 2.0 once that is fully available. ### Added - Added `removeComment()` method for Worksheet [PR #2875](https://github.com/PHPOffice/PhpSpreadsheet/pull/2875/files) - Add point size option for scatter charts [Issue #2298](#2298) [PR #2801](#2801) - Basic support for Xlsx reading/writing Chart Sheets [PR #2830](#2830) Note that a ChartSheet is still only written as a normal Worksheet containing a single chart, not as an actual ChartSheet. - Added Worksheet visibility in Ods Reader [PR #2851](#2851) and Gnumeric Reader [PR #2853](#2853) - Added Worksheet visibility in Ods Writer [PR #2850](#2850) - Allow Csv Reader to treat string as contents of file [Issue #1285](#1285) [PR #2792](#2792) - Allow Csv Reader to store null string rather than leave cell empty [Issue #2840](#2840) [PR #2842](#2842) - Provide new Worksheet methods to identify if a row or column is "empty", making allowance for different definitions of "empty": - Treat rows/columns containing no cell records as empty (default) - Treat cells containing a null value as empty - Treat cells containing an empty string as empty ### Changed - Modify `rangeBoundaries()`, `rangeDimension()` and `getRangeBoundaries()` Coordinate methods to work with row/column ranges as well as with cell ranges and cells [PR #2926](#2926) - Better enforcement of value modification to match specified datatype when using `setValueExplicit()` - Relax validation of merge cells to allow merge for a single cell reference [Issue #2776](#2776) - Memory and speed improvements, particularly for the Cell Collection, and the Writers. See [the Discussion section on github](#2821) for details of performance across versions - Improved performance for removing rows/columns from a worksheet ### Deprecated - Nothing ### Removed - Nothing ### Fixed - Xls Reader resolving absolute named ranges to relative ranges [Issue #2826](#2826) [PR #2827](#2827) - Null value handling in the Excel Math/Trig PRODUCT() function [Issue #2833](#2833) [PR #2834](#2834) - Invalid Print Area defined in Xlsx corrupts internal storage of print area [Issue #2848](#2848) [PR #2849](#2849) - Time interval formatting [Issue #2768](#2768) [PR #2772](#2772) - Copy from Xls(x) to Html/Pdf loses drawings [PR #2788](#2788) - Html Reader converting cell containing 0 to null string [Issue #2810](#2810) [PR #2813](#2813) - Many fixes for Charts, especially, but not limited to, Scatter, Bubble, and Surface charts. [Issue #2762](#2762) [Issue #2299](#2299) [Issue #2700](#2700) [Issue #2817](#2817) [Issue #2763](#2763) [Issue #2219](#2219) [Issue #2863](#2863) [PR #2828](#2828) [PR #2841](#2841) [PR #2846](#2846) [PR #2852](#2852) [PR #2856](#2856) [PR #2865](#2865) [PR #2872](#2872) [PR #2879](#2879) [PR #2898](#2898) [PR #2906](#2906) [PR #2922](#2922) [PR #2923](#2923) - Adjust both coordinates for two-cell anchors when rows/columns are added/deleted. [Issue #2908](#2908) [PR #2909](#2909) - Keep calculated string results below 32K. [PR #2921](#2921) - Filter out illegal Unicode char values FFFE/FFFF. [Issue #2897](#2897) [PR #2910](#2910) - Better handling of REF errors and propagation of all errors in Calculation engine. [PR #2902](#2902) - Calculating Engine regexp for Column/Row references when there are multiple quoted worksheet references in the formula [Issue #2874](#2874) [PR #2899](#2899)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is:
What is the expected behavior?
Reader should load all columns from a csv file even if columns are blank
What is the current behavior?
When reading a csv file where the last column is not filled in, then the array key is not added to the array.
What are the steps to reproduce?
Create a text file with 4 columns and no header row with comma delimited data
john,doe,,
mary,jane,,
pass the file name and path to $inputFileName
$inputFileType = IOFactory::indentify($inputFileName);
$reader = IOFactory::createReader($inputFileType);
$spreadSheet = $reader->load($inputFileName);
var_dump($spreadSheet[1]);
die();
Results of var_dump(); will only return the first two keys and not the final two keys.
array(2) {
[1]=>
array(2) {
["A"]=> string(4) "John"
["B"]=> string(3) "Doe"
}
[2]=>
array(2) {
["A"]=> string(4) "Mary"
["B"]=> string(4) "Jane"
}
}
Change the data to be the following:
John,Doe,A,1
Mary,Jane,A,2
Then you will see the full array of data in the var_dump(); results.
array(2) {
[1]=>
array(4) {
["A"]=> string(4) "John"
["B"]=> string(3) "Doe"
["C"]=> string(1) "A"
["D"]=> int(1)
}
[2]=>
array(4) {
["A"]=> string(4) "Mary"
["B"]=> string(4) "Jane"
["C"]=> string(1) "B"
["D"]=> int(2)
}
}
SampleCSV_NoHeader_MissingData.csv
SampleCSV_NoHeader_WithData.csv
What features do you think are causing the issue
Does an issue affect all spreadsheet file formats? If not, which formats are affected?
I have only tested with a csv files
Which versions of PhpSpreadsheet and PHP are affected?
1.22
The text was updated successfully, but these errors were encountered: