从groovy / java中的csv中删除列 [英] remove column from csv in groovy/java
问题描述
我正在使用Select查询从数据库中检索数据并生成可以正常工作的CSV。
I am using Select query to retrieve the data from database and generate CSV which is working fine.
在我的 FData
类中我有下面的方法,我正在为csv中的单元格值格式化。我的选择查询中有列 ATYPE
,我不想用CSV编写,或者在写完之后可能只是清除完整列 ATYPE $ c
In my FData
class i have below method where i am doing formating for cell value in csv. I have column ATYPE
in my select query which i dont want to write in csv or may be after writing just clear the complete column ATYPE
field from csv so that it cant be shown.
是否可以在下面的方法中执行此操作以实现此逻辑?
Is there way i can do that in below method to do this logic?
private static void IFile(File output, Sql sql, String query, List<String> columns) {
output.withWriter { writer ->
writer.writeLine(columns.join(CSV_SEPARATOR))
sql.eachRow(query) { rec ->
try {
writer.writeLine(columns.collect { columnName ->
def cell = rec[columnName]
// cell data processing for CSV output...If cell is empty then replace with "" else do the other formating
if (cell != null) {
if (cell.properties["class"] == Timestamp.class)
return IData.OUT_DATE_FORMAT.format(cell)
}
else {
return ""
}
return cell
}.join(CSV_SEPARATOR))
} }
sql.close()
}
}
在下面给出的代码中,确切的语法可能是错误的(我对groovy只是一个初学者的了解),但是您将了解如何解决它: / p>
In the code given below, the exact syntax may be wrong (I've just a beginner-level knowledge in groovy) but you will get the idea of how to solve it:
-
在加入之前过滤列名,即
Filter the column names before joining i.e.
writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))
在写入之前过滤数据,即
Filter the data before writing i.e.
writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName ->
//...
}
这篇关于从groovy / java中的csv中删除列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!