2016-12-30 4 views
0

그루비 스크립트를 사용하여 CSV 파일의 두 필드를 연결합니다. 빈 셀에 도달하면 스크립트가 축소되는 것을 제외하고는 스크립트가 완벽하게 작동합니다. 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 방법을 생각하는 인수를 선언거야.

이 문제를 해결하려면 단일 arg closure를 사용합니다. 단일 인수에는 분할 값의 배열 (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 }" 
    } 
    } 
관련 문제