| cdn | ||
| docs | ||
| sample-site | ||
| src | ||
| test | ||
| .babelrc | ||
| .coveralls.yml | ||
| .gitignore | ||
| .npmignore | ||
| .travis.yml | ||
| index.js | ||
| package.json | ||
| README.md | ||
| server.js | ||
| webpack.sample.config.js | ||
Overview :
Generate CSV document according to given data.
This data can be array of arrays , or array of literal objects or string which is the CSV content.
Example :
import {CSVLink, CSVDownload} from 'react-csv';
const csvData =[
['firstname', 'lastname', 'email'] ,
['Ahmed', 'Tomi' , 'ah@smthing.co.com'] ,
['Raed', 'Labes' , 'rl@smthing.co.com'] ,
['Yezzi','Min l3b', 'ymin@cocococo.com']
];
<CSVLink data={csvData} >Download me</CSVLink>
// or
<CSVDownload data={csvData} target="_blank" />
Install :
npm install react-csv --save;
Components:
This package includes actually two components: CSVLink and CSVDownload.
0. Common Props:
The two components accepts the following Props:
- data Props:
a required property that represents the CSV data. This data can be array of arrays, array of literal objects or string.
.i.e (array of arrays)
//array of arrays : each item is rendered as csv line
data = [
['firstname', 'lastname', 'email'] ,
['Ahmed', 'Tomi' , 'ah@smthing.co.com'] ,
['Raed', 'Labes' , 'rl@smthing.co.com'] ,
['Yezzi','Min l3b', 'ymin@cocococo.com']
];
.i.e (array of literal objects)
//array of literal objects : each item is rendered as csv line however the order of fields will be defined by headers props .If headers props is not defined , the component will generate headers from all data items.
data = [
{firstname: 'Ahmed', lastname: 'Tomi' , email: 'ah@smthing.co.com'},
{firstname:'Raed', lastname:'Labes' , email:'rl@smthing.co.com'} ,
{firstname:'Yezzi', lastname:'Min l3b', email:'ymin@cocococo.com'}
];
.i.e (string)
//if the data is string , this means the csv content is already generated by developer/3rd party package.
data =`firstname,lastname
Ahmed,Tomi
Raed,Labes
Yezzi,Min l3b
`;
// or using 3rd party package
import json2csv from 'json2csv';
data = json2csv(arrayOfLiteralObjects);
- headers Props:
Specifying headers helps to define an order of CSV fields , so , the csv content will be generated accordingly.
Notes :
- The meaning of headers with data of type
Arrayis to order fields AND prepend those headers at the top of CSV content.- The meaning of headers with data of type
Stringdata is only prepending those headers as the first line of CSV content.
1. CSVLink Component:
It renders a hyperlink , and clicking on it will trigger the download action of the CSV document.
It does not accept only data and headers props , but also , it rendered all props of HTMLAnchor tag. (className, target,....)
example
import {CSVLink} from 'react-csv';
<CSVLink data={data}
className="btn btn-primary"
target="_blank">
Download me
</CSVLink>
2. CSVDownload Component:
It triggers downloading ONLY on mounting the component. so , be careful to render this component whenever it is needed.
It does not accept only data and headers props , but also , it takes advantage of all arguments of window.open function known that its signature is :
window.open(ARG0, target, specs, replace )
Thus, target, specs and replace Props are available .
example
import {CSVDownload} from 'react-csv';
<CSVDownload data={data} target="_blank" />
Contribution :
Run the sample :
cd react-csv/
then :
-
npm install. -
npm start -
browse :
http://localhost:8008.
