2016-12-30 112 views
0

使用groovy腳本在CSV文件的2個字段之間進行拼接。 腳本工作完美,除非它遇到空單元格時會摺疊。使用Groovy將0添加到空csv單元格

我設法使用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> 

任何建議如何使用Groovy來解決這個問題?

在此先感謝

+0

什麼是應該在遇到空單元格的情況發生? –

+0

其投擲錯誤訊息 –

+0

請更具體。一個獨立的 - 任何人都可以運行它 - 重現問題的例子會更好。 –

回答

0

沒有詳細的錯誤,我會承擔splitEachLine方法不能分割行到足夠的零件,以值分配給所有的Closure的聲明的參數。

要解決這個問題,我會使用單個arg閉包。單個參數被分配一個數組(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 }" 
    } 
    } 
相關問題