-
Notifications
You must be signed in to change notification settings - Fork 23
Comparison of Java CSV libraries
Charlie Hayes edited this page Jul 29, 2019
·
11 revisions
| Commons CSV | Flatpack | JavaCSV | opencsv | Super CSV | jcsv | CSVeed | |
| Repository | |||||||
| - Maven Central entry | yes | yes | yes | yes | yes | yes | yes |
| - Source in Maven | yes | no | no | yes | yes | yes | yes |
| - Dependencies | none | JDOM, JExcelapi | none | none | none | none | Spring, SLF4J |
| - Logging support | no | no | no | no | no | no | SLF4J |
| - Version | 1.6 | 4.0.1 | 2.0.0 | 4.3.2 | 2.0.1 | 2.4.0 | 0.2.2 |
| - Last Release | 22-Sept-2018 | 30-Jul-2015 | 20-Feb-2008 | 14-Oct-2018 | 8-Dec-2012 | 29-Oct-2015 | 2-Mar-2013 |
| Tokenizer | |||||||
| - custom separator | yes | yes | yes | yes | yes | yes | yes |
| - custom quote | yes | yes | no | yes | yes | yes | yes |
| - custom escape | yes | no | yes, cryptic | yes | no, same as quote | no | yes |
| - custom EOL | yes | no | yes | yes | no | no | yes |
| - \n in delimited field | yes | yes | yes | yes | yes | yes | yes |
| - escaped quote in quoted field | yes | yes | yes | yes | yes | yes | yes |
| - different escape / quote | yes | yes | N/A | yes | N/A | N/A | yes |
| - deal with leading/trailing whitespace | yes | no | yes | no | no | no | yes |
| Line reading | |||||||
| - get by column index | yes | no | yes | yes | yes | yes | yes |
| - get by column name | yes | yes | yes | no | no | no | yes |
| - read single line (streaming) | no | no | yes | yes | yes | yes | yes |
| - read all lines | yes | yes, DataSet | no | yes | no | yes | yes |
| - skip comment lines | yes | no | yes | no | no | yes | yes |
| - ignore empty lines | config | yes | config | no | yes, auto | yes, auto | yes |
| Bean mapping | N/A | N/A | N/A | ||||
| - column index-based mapping | " | " | " | yes | no | yes | yes |
| - column name-based mapping | " | " | " | theoretically | yes | no | yes |
| - supports annotations | " | " | " | no | no | limited | yes |
| - converts to primitives | " | " | " | yes | set manually | yes | yes |
| - converts to basic Objects | " | " | " | no | set manually | yes | yes |
| - PropertyEditor support | " | " | " | yes, overwrite | no | no | yes |
| - Date support | " | " | " | no | yes | very limited | yes |
| - Returns typed Bean | " | " | " | no | yes | yes | yes |
| - Deep conversion | " | " | " | no | yes, untried | no | no |
| Writing CSV | |||||||
| - write to Writer | yes | yes | yes | yes | yes | yes | no |
| Documentation | |||||||
| - RFC 4180 | Format Enum | not mentioned | not mentioned | RFC4180Parser | yes | yes | no |
| - Manual | no | yes | no | no | yes | yes | no |
| - Examples | no | yes | yes | yes | yes | yes | no |
| - Ideas behind library | no | yes | no | no | yes | no | no |
| - JavaDoc | yes | yes | no | yes | yes | yes | no |
| - JavaDoc package description | no | partially | no | yes | yes | yes | yes |
| - Roadmap | no | no | no | no | yes | no | no |
| Quality of error feedback | |||||||
| - syntax error | line | line, obscure | eats a lot | no line | line nr | no | exact |
| - illegal number of columns | no | line, obscure | no | no check | exact | no | exact |
| - illegal column index mapping | N/A | N/A | N/A | no | N/A | no | line |
| - illegal column name mapping | N/A | N/A | N/A | untried | line, obscure | N/A | exact |
| - cell to property error | N/A | N/A | N/A | no line, only value | line | only value | exact |
| - bean in original context | N/A | N/A | N/A | no | no | no | no |
| Convenience | |||||||
| - dry run | ? | yes | ? | ? | ? | ? | no |
| - single facade | no | no | yes | no | no | no | yes |
| Open Source Community | |||||||
| - active & large community | yes | no | no | yes | yes | no | no |
| - issue management | yes | no | no | yes | yes | no | yes |