从groovy / java中的csv中删除列 [英] remove column from csv in groovy/java

查看:86
本文介绍了从groovy / java中的csv中删除列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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

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:


  1. 在加入之前过滤列名,即

  1. 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屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆