我使用selectquery从数据库中检索数据并生成csv,它运行良好。
在我的 FData
我在下面的方法中对csv中的单元格值进行格式化。我有专栏 ATYPE
在我的select查询中,我不想在csv中写入,或者可能是在写入之后,只需清除完整的列 ATYPE
csv中的字段,使其无法显示。
有没有办法我可以在下面的方法做这个逻辑呢?
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()
}
}
1条答案
按热度按时间bogh5gae1#
在下面给出的代码中,确切的语法可能是错误的(我只是groovy的初级知识),但您将了解如何解决它:
在加入之前过滤列名。
在写入之前过滤数据,即。