Create a CSV file
June 21st, 2010
5 Comments
5 Comments
For this example, let’s assume we have an array of maps as our data.
def planets = [ [id:'1',color:'red',planet:'mars',description:'Mars, the "red" planet'], [id:'2',color:'green',planet:'neptune',description:'Neptune, the "green" planet'], [id:'3',color:'blue',planet:'earth',description:'Earth, the "blue" planet'], ]
Next, we can create our CSV file as follows:
def out = new File('planets.csv') planets.each { def row = [it.id, it.color, it.planet] out.append row.join(',') out.append '\n' }
Which creates a file with the following content:
1,red,mars 2,green,neptune 3,blue,earth
However, this does not contain our description field. If you need to also handle double quotes and commas in your data then you can:
- qualify your values with a double quote, and
- replace double quotes in your data with an escaped double quote.
In this case our code may look like:
def out = new File('planets.csv') planets.each { def row = [it.id, it.color, it.planet, it.description] .collect { '"' + it.replace('"','""') + '"' } out.append row.join(',') out.append '\n' }
Which creates a file with the following content:
"1","red","mars","Mars, the ""red"" planet" "2","green","neptune","Neptune, the ""blue"" planet" "3","blue","earth","Earth, the ""blue"" plan