{"id":17846464,"url":"https://github.com/technicalguru/csv","last_synced_at":"2026-03-06T02:48:10.678Z","repository":{"id":107558394,"uuid":"74031890","full_name":"technicalguru/csv","owner":"technicalguru","description":"CSV/Excel Utility - Easy CSV and Excel handling for Java applications","archived":false,"fork":false,"pushed_at":"2025-06-02T08:36:43.000Z","size":11543,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-05T21:04:40.247Z","etag":null,"topics":["csv","excel","java","stream-processing"],"latest_commit_sha":null,"homepage":"https://techblog.ralph-schuster.eu/csv-utility-package-for-java/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technicalguru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-17T13:57:20.000Z","updated_at":"2025-06-02T08:36:47.000Z","dependencies_parsed_at":"2024-10-27T22:28:25.862Z","dependency_job_id":"22460cfc-aed9-4033-b475-8093c43cfcb9","html_url":"https://github.com/technicalguru/csv","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/technicalguru/csv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fcsv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fcsv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fcsv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fcsv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technicalguru","download_url":"https://codeload.github.com/technicalguru/csv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fcsv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007028,"owners_count":26084227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","excel","java","stream-processing"],"created_at":"2024-10-27T21:40:00.300Z","updated_at":"2025-10-11T11:33:04.391Z","avatar_url":"https://github.com/technicalguru.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\nUnfortunately, Java does not offer any methods to simply read CSV files or produce such, not mentioning Excel. \nI for myself found it quite easy to work with such files; especially when you need to deal with data from and \nto Microsoft Excel.\n\nMy CSV/Excel Utility Package, published under the [GNU Lesser General Public License](LICENSE.md), allows you to easily \nintegrate CSV and Excel functionality into your application, just by using Iterator-like classes for reading, \nand PrintStream-like classes for writing. The CSV tools can be configured to use different column delimiter \nand separator characters in case you need to adopt some other versions of CSV. The default configuration \nconforms to the Excel style of CSV.\n\nThe Excel tools conform to the same way that CSV tools behave (see below). Therefore, two new interfaces \n[TableReader](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest//csv/TableReader.html) \nand [TableWriter](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest//csv/TableWriter.html)\nwere introduced to reflect the common functions. The new \n[ExcelWriter](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest//csv/impl/ExcelWriter.html)\nallows you to easily create Excel files while still having the flexibility of formatting issues (see \n[ExcelFormatter](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest//csv/impl/ExcelFormatter.html)\ninterface). The implementation is based on [Apache’s POI library](http://poi.apache.org/).\n\nSince this CSV/Excel package uses streams, you are able to read from any stream. And, of course, you can \nwrite to any stream. You could even synchronize within your application by applying the \n[reader/writer synchronization](https://techblog.ralph-schuster.eu/2008/08/09/synchronizing-reader-and-writer-threads/)\ndescribed in one of my articles.\n\nPlease notice that some methods are deprecated since V2.0 and CSVReader and CSVWriter classes are moved into \nother packages in favour of readability and structuring of the classes.\n\nExcel functionality is available since version 2.0.\n\n## Code Examples\n\n * [Reading a CSV file](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/impl/CSVReader.html)\n * [Reading an Excel file](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/impl/ExcelReader.html)\n * [Writing a CSV file](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/impl/CSVWriter.html)\n * [Writing an Excel file](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/impl/ExcelWriter.html)\n * [Using StreamMapper to convert between table stream data and Java objects](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/mapper/StreamMapper.html)\n * [Reading objects from a table stream](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/util/ObjectReader.html)\n * [Writing objects to a table stream](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest/csv/util/ObjectWriter.html)\n## Maven Coordinates\n\n```\n\u003cdependency\u003e\n\t\u003cgroupId\u003eeu.ralph-schuster\u003c/groupId\u003e\n\t\u003cartifactId\u003ecsv\u003c/artifactId\u003e\n\t\u003cversion\u003e4.3.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n## Version Notes\n\n * Java 21 required since v4.3\n \n## API Reference\n\nJavadoc API for latest stable version can be accessed [here](https://www.javadoc.io/doc/eu.ralph-schuster/csv/latest//index.html).\n\n## Contribution\n\n * [Project Homepage](https://github.com/technicalguru/csv)\n * [Issue Tracker](https://github.com/technicalguru/csv/issues)\n  \n## License\n\nCSV is free software: you can redistribute it and/or modify it under the terms of version 3 of the GNU \nLesser General Public  License as published by the Free Software Foundation.\n\nCSV is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied \nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public \nLicense for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with CSV.  If not, see \n\u003chttp://www.gnu.org/licenses/lgpl-3.0.html\u003e.\n\nSummary:\n 1. You are free to use all this code in any private or commercial project. \n 2. You must distribute license and author information along with your project.\n 3. You are not required to publish your own source code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalguru%2Fcsv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnicalguru%2Fcsv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalguru%2Fcsv/lists"}