Skip to content
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

Inconsistent Col Length in CSV Fails #375

Closed
bomberby opened this issue Jan 11, 2017 · 3 comments
Closed

Inconsistent Col Length in CSV Fails #375

bomberby opened this issue Jan 11, 2017 · 3 comments

Comments

@bomberby
Copy link

After upgrading to 2.7.0, a service we've been using stopped working:

We are opening a CSV file generated by a third party, the first line contains meta-data, second line is headers, and third onward is the data itself.

Because the meta-data width is shorter than the data and roo is assuming the column_count according to first line, none of the data that is past these columns are accessible, making the service unusable.

@bomberby bomberby changed the title Non-Square CSV Fails Inconsistant Col Length in CSV Fails Jan 11, 2017
@bomberby bomberby changed the title Inconsistant Col Length in CSV Fails Inconsistent Col Length in CSV Fails Jan 11, 2017
@stevendaniels
Copy link
Contributor

Could you provide a sample of the CSV that's giving you issues.

@bomberby
Copy link
Author

A CSV as simple as

1,2,3
1,2,3,4,5

When opening in it on roo 2.7.0
csv.row(1) => ["1", "2", "3"] : as expected
csv.row(2) => ["1", "2", "3"] : 4 and 5 are not there

On 2.6.0
csv.row(1) => ["1", "2", "3", nil, nil]
csv.row(2) => ["1", "2", "3", "4", "5"]

@kakoni
Copy link

kakoni commented Nov 9, 2017

It fails because set_column_count in csv.rb assumes that first line in csv file sets the maximum column length (https://github.com/roo-rb/roo/blob/master/lib/roo/csv.rb#L109)

So why not pick the longest one instead.

@last_column[sheet] = (::CSV.readlines(@filename, csv_options).max_by(&:length) || []).size

stevendaniels added a commit that referenced this issue Feb 14, 2018
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Jan 20, 2019
pkgsrc change: add "USE_LANGUAGES= # none".

##  [2.8.0] 2019-01-18
### Fixed
- Fixed inconsistent column length for CSV [375](roo-rb/roo#375)
- Fixed formatted_value with `%` for Excelx [416](roo-rb/roo#416)
- Improved Memory consumption and performance [434](roo-rb/roo#434) [449](roo-rb/roo#449) [454](roo-rb/roo#454) [456](roo-rb/roo#456) [458](roo-rb/roo#458) [462](roo-rb/roo#462) [466](roo-rb/roo#466)
- Accept both Transitional and Strict Type for Excelx's worksheets [441](roo-rb/roo#441)
- Fixed ruby warnings [442](roo-rb/roo#442) [476](roo-rb/roo#476)
- Restore support for URL as file identifier for CSV [462](roo-rb/roo#462)
- Fixed missing location for Excelx's links [482](roo-rb/roo#482)

### Changed / Added
- Drop support for ruby 2.2.x and lower
- Updated rubyzip version for fixing security issue. Now minimal version is 1.2.1
- Roo::Excelx::Coordinate now inherits Array [458](roo-rb/roo#458)
- Improved Roo::HeaderRowNotFoundError exception's message [461](roo-rb/roo#461)
- Added `empty_cell` option which by default disable allocation for Roo::Excelx::Cell::Empty [464](roo-rb/roo#464)
- Added support for variable number of decimals for Excelx's formatted_value [387](roo-rb/roo#387)
- Added `disable_html_injection` option to disable html injection for shared string in `Roo::Excelx` [392](roo-rb/roo#392)
- Added image extraction for Excelx [414](roo-rb/roo#414) [397](roo-rb/roo#397)
- Added support for `1e6` as scientific notation for Excelx [433](roo-rb/roo#433)
- Added support for Integer as 0 based index for Excelx's `sheet_for` [455](roo-rb/roo#455)
- Extended `no_hyperlinks` option for non streaming Excelx methods [459](roo-rb/roo#459)
- Added `empty_cell` option to disable Roo::Excelx::Cell::Empty allocation for Excelx [464](roo-rb/roo#464)
- Added support for Integer with leading zero for Roo:Excelx [479](roo-rb/roo#479)
- Refactored Excelx code [453](roo-rb/roo#453) [477](roo-rb/roo#477) [483](roo-rb/roo#483) [484](roo-rb/roo#484)

### Deprecations
- Roo::Excelx::Sheet#present_cells is deprecated [454](roo-rb/roo#454)
- Roo::Utils.split_coordinate is deprecated [458](roo-rb/roo#458)
- Roo::Excelx::Cell::Base#link is deprecated [457](roo-rb/roo#457)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants