2016-12-30 3 views
0

Im используя groovy-скрипт для объединения двух полей в CSV-файлах. Скрипт работает отлично, за исключением того, что он обрушивается, когда он попадает в пустые ячейки.Добавить 0 в пустые ячейки csv с помощью Groovy

мне удалось использовать 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?) Значений split. Вы можете проверить длину массива, прежде чем пытаться обработать строку.

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 }" 
    } 
    } 
Смежные вопросы