<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
 <properties>
  <title>Home</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Using Apache Commons CSV">
  <p>Commons CSV reads and writes files in variations of the Comma Separated Value (CSV) format.</p>
  <p>The most common CSV formats are predefined in the <a href="apidocs/org/apache/commons/csv/CSVFormat.html">CSVFormat</a> class:
  <ul>
    <li>Microsoft Excel</li>
    <li><a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">Informix UNLOAD</a></li>
    <li><a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">Informix UNLOAD CSV</a></li>
    <li><a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump-delimited-text.html">MySQL</a></li>
    <li><a href="http://tools.ietf.org/html/rfc4180">RFC 4180</a></li>
    <li><a href="http://en.wikipedia.org/wiki/Tab-separated_values">TDF</a></li>
  </ul>
  </p>
  <p>Custom formats can be created using a fluent style API.</p>
</section>
<!-- ================================================== -->
<section name="Documentation">
<p>
An overview of the functionality is provided in the
<a href="user-guide.html">user guide</a>.
Various <a href="project-reports.html">project reports</a> are also available.
</p>
<p>
The Javadoc API documents are available online:
</p>
<ul>
  <li><a href="apidocs/index.html">Javadoc trunk</a></li>
  <li><a href="archives/1.5/apidocs/index.html">Javadoc 1.5</a></li>
  <li><a href="archives/1.4/apidocs/index.html">Javadoc 1.4</a></li>
  <li><a href="archives/1.3/apidocs/index.html">Javadoc 1.3</a></li>
  <li><a href="archives/1.2/apidocs/index.html">Javadoc 1.2</a></li>
  <li><a href="archives/1.1/apidocs/index.html">Javadoc 1.1</a></li>
  <li><a href="archives/1.0/apidocs/index.html">Javadoc 1.0</a></li>
</ul>
<p>
The <a href="source-repository.html">git repository</a> can be
<a href="https://git-wip-us.apache.org/repos/asf?p=commons-csv.git">browsed</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Releases">
<ul>
  <li><a href="http://commons.apache.org/csv/download_csv.cgi">Apache Commons CSV 1.5 (mirrors)</a> requires Java 1.7</li>
  <li><a href="http://commons.apache.org/dist/commons/csv/">Apache Commons CSV 1.4 (archives)</a> requires Java 1.6</li>
  <li><a href="http://archive.apache.org/dist/commons/csv/">Apache Commons CSV 1.3 (archives)</a> requires Java 1.6</li>
  <li><a href="http://archive.apache.org/dist/commons/csv/">Apache Commons CSV 1.2 (archives)</a> requires Java 1.6</li>
  <li><a href="http://archive.apache.org/dist/commons/csv/">Apache Commons CSV 1.1 (archives)</a> requires Java 1.6</li>
  <li><a href="http://archive.apache.org/dist/commons/csv/">Apache Commons CSV 1.0 (archives)</a> requires Java 1.6</li>
</ul>
<p>
See the
<a href="http://commons.apache.org/csv/download_csv.cgi">Download Page</a>
for the latest releases.<br />
</p>
<p>
<a href="changes-report.html">Change reports</a> are also available.
</p>
<p>
For previous releases, see the <a href="http://archive.apache.org/dist/commons/csv/">Apache Archive</a>
</p>
<p>
  Alternatively, you can pull it from a Maven repository:
  <pre>&lt;dependency&gt;
    &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
    &lt;artifactId&gt;commons-csv&lt;/artifactId&gt;
    &lt;version&gt;1.5&lt;/version&gt;
&lt;/dependency&gt;</pre>
</p>
<p>
  For other dependency access methods, see <a href="dependency-info.html">Dependency Information</a>
</p>
</section>

<section name="Building from sources">
  <p>The latest code can be checked out from our git repository at <a href="https://git-wip-us.apache.org/repos/asf/commons-csv.git">https://git-wip-us.apache.org/repos/asf/commons-csv.git</a>.
    You can build the component using Apache Maven using <code>mvn clean package</code>.
  </p>
</section>
<!-- ================================================== -->
<section name="Getting Involved">
  <p>
    The <a href="mail-lists.html">commons developer mailing list</a> is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [csv]. </p>
  <p>You can also visit the #apache-commons IRC channel on irc.freenode.net or peruse <a href="issue-tracking.html">JIRA</a>. Specific links of interest for JIRA are:</p>
  <ul>
    <li>Ideas looking for code: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CSV%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22Patch%20Needed%22">Patch Needed</a></li>
    <li>Issues with patches, looking for reviews: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CSV%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20Review">Review Patch</a></li>
  </ul>
  <p>Alternatively you can go through the <em>Needs Work</em> tags in the <a href="taglist.html">TagList report</a>.</p>
  <p>If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a <a href="https://github.com/apache/commons-csv/">GitHub mirror</a>. </p>
</section>
<!-- ================================================== -->
<section name="Support">
  <p>
    The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
    The user list is suitable for most library usage queries.
    The dev list is intended for the development discussion.
    Please remember that the lists are shared between all commons components,
    so prefix your email by [csv].
  </p>
  <p>
    Bug reports and enhancements are also welcomed via the <a href="issue-tracking.html">JIRA</a> issue tracker.
    Please read the instructions carefully.
  </p>
</section>
<!-- ================================================== -->

<section name="About Commons CSV">
  <p>Commons CSV was started to unify a common and simple interface for reading and writing CSV files under an ASL license. It has been bootstrapped by a code donation from Netcetera in Switzerland. There are three pre-existing BSD compatible CSV parsers which this component will hopefully make redundant (authors willing): </p>
  <ul>
    <li><a href="http://kasparov.skife.org/csv/">Skife CSV</a></li>
    <li><a href="http://opencsv.sourceforge.net/">Open CSV</a></li>
    <li><a href="http://www.osjava.org/genjava/multiproject/gj-csv/">Genjava CSV</a></li>
  </ul>
  <p>In addition to the code from Netcetera (org.apache.commons.csv), Martin van den Bemt has added an additional writer API. </p>
  <p>Other CSV implementations: </p>
  <ul>
    <li><a href="http://supercsv.sourceforge.net/">Super CSV</a></li>
  </ul>
</section>

<!-- ================================================== -->
</body>
</document>
