在groovy/java中从csv中删除列

lvmkulzt  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(318)

我使用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()
        }
    }
bogh5gae

bogh5gae1#

在下面给出的代码中,确切的语法可能是错误的(我只是groovy的初级知识),但您将了解如何解决它:
在加入之前过滤列名。

writer.writeLine(columns.findAll({ it != 'ATYPE'}).join(CSV_SEPARATOR))

在写入之前过滤数据,即。

writer.writeLine(columns.findAll({ it != 'ATYPE'}).collect { columnName ->
     //...
 }

相关问题