2016-12-30 5 views
0

Im Groovyスクリプトを使用してCSVファイルの2つのフィールドを連結します。 空のセルにヒットしたら、スクリプトは完全に機能しています。Groovyを使用して空のcsvセルに0を追加

私はこの事を避けるために、PowerShellスクリプトを使用するために管理が、その後、私は任意の提案は、グルーヴィーでこれを解決する方法のエンコーディングの問題で

<groovy> 
    ant.mkdir(dir:"target") 


    new File("target/UpsertCheckDeals.csv").withWriter { 
    new File("C:/Users/alon\Documents\CheckDealBeforeUpsert.csv").splitEachLine(",") { Customer__c, Name__c, Deal__c, Amount__c, CheckCount__c, Discount__c -> 
     it.println "${Customer__c},${Name__c},${CheckCount__c},${Deal__c},${Amount__c},${Discount__c},${Customer__c}-${Deal__c }" 
    } 
    } 

</groovy> 

を捕まってしまいましたか?エラーの詳細がなく、事前

+0

空のセルに遭遇したらどうなるのでしょうか? –

+0

投げつけのエラーメッセージ –

+0

具体的にしてください。自己完結型だから誰もそれを動かすことができる。問題を再現する例がさらに良いだろう。 –

答えて

0

おかげで、私はsplitEachLine方法は閉鎖の引数を宣言したのすべてに値を割り当てるために十分な部分にラインを分割することはできませんと仮定するつもりです。

これを回避するには、単一引数のクロージャを使用します。単一の引数に分割値の配列(List?)が割り当てられます。行を処理する前に、配列の長さを確認できます。

new File("target/UpsertCheckDeals.csv").withWriter { 
    new File("C:/Users/alon\Documents\CheckDealBeforeUpsert.csv").splitEachLine(",") { parts -> 
     if (parts.length != 6) return // or maybe it's .size() 
     (Customer__c, Name__c, Deal__c, Amount__c, CheckCount__c, Discount__c) = parts 
     it.println "${Customer__c},${Name__c},${CheckCount__c},${Deal__c},${Amount__c},${Discount__c},${Customer__c}-${Deal__c }" 
    } 
    } 
関連する問題