Create a CSV file

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:

  1. qualify your values with a double quote, and
  2. 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"" planet"

发表回复