2015-09-30 3 views
-1

У меня есть csv, который я хочу проверить количество строк, а затем прокрутить содержимое. Я использую код внизу, чтобы получить счет, который работает, но я не уверен, как я могу пройти через csv и получить значения в каждом столбце. Ive читал, что я могу сделать это, используя cmdlet select-object, если я укажу имена столбцов, но этот код будет работать для нескольких csv с разными именами столбцов. Любые идеи, как я могу сделать эту работу?как подсчитывать строки в csv, а затем прокручивать содержимое

$csv = Import-Csv -Path $requestFile | measure 

if(($csv).count-1 -gt 1){ 
    //do something 
} 
+0

Если я позвоню 'Импорт-Csv' без обжигающе результат к чему-либо (например,' Импорт-Csv \ тест. .csv'), то он показывает мне свойство каждой строки, по одному свойству на строку. Вы ищете другой формат вывода? – ama1111

+0

@ ama1111 да, но тогда вы не можете получить счет –

+0

Удаление трубы в 'Measure' позволит вам получить как счет, так и данные. Я отправил ответ с более подробной информацией. – ama1111

ответ

0

Import-Csv создает список объектов. Этот список уже имеет Count свойство, так что вам не нужно измерить его самостоятельно:

$csv = Import-Csv -Path $requestFile 

if ($csv.Count -gt 2) { 
    # do something 
} 

Не уверен, почему вы хотите, чтобы ограничить «сделай коснуться», чтобы с томами CSV более 2-х строк, хотя.

Если вы хотите, чтобы цикл по столбцам каждой строки вы можете сделать это с помощью вложенного цикла, как описано в this answer:

$csv = Import-Csv -Path $requestFile 

if ($csv.Count -gt 2) { 
    $csv | ForEach-Object { 
     foreach ($property in $_.PSObject.Properties) { 
      doSomething $property.Name, $property.Value 
     } 
    } 
} 

Для получения дополнительной помощи вы должны объяснить, что вы на самом деле хотите делать с колонками.

+0

Способ, которым этот ответ в настоящее время написан, заставляет его звучать как комментарий. Это комментарий или ответ? Если это ответ, он должен быть написан более конкретным образом. – JAL

0

Вам не нужно труба до Measure, чтобы получить количество строк. Фактически, переменная, которую вы сохранили в $csv, не является данными csv, а выходом от Measure, поэтому вы должны удалить трубу до Measure.

Вот пример:

PS C:\temp> $csv = Import-Csv .\test.csv 
PS C:\temp> # Here you can perform your check on the size of the csv 
PS C:\temp> $csv.Count 
4 
PS C:\temp> # ... and you can get all the data like this: 
PS C:\temp> $csv 


Year  : 1997 
Make  : Ford 
Model  : E350 
Description : ac, abs, moon 
Price  : 3000.00 

Year  : 1999 
Make  : Chevy 
Model  : Venture "Extended Edition" 
Description : 
Price  : 4900.00 

Year  : 1999 
Make  : Chevy 
Model  : Venture "Extended Edition, Very Large" 
Description : 
Price  : 5000.00 

Year  : 1996 
Make  : Jeep 
Model  : Grand Cherokee 
Description : MUST SELL! 
       air, moon roof, loaded 
Price  : 4799.00 

Мой CSV выглядит следующим образом:

Year,Make,Model,Description,Price 
1997,Ford,E350,"ac, abs, moon",3000.00 
1999,Chevy,"Venture ""Extended Edition""","",4900.00 
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00 
1996,Jeep,Grand Cherokee,"MUST SELL! 
air, moon roof, loaded",4799.00 
Смежные вопросы