2016-11-16 1 views
-2

누군가가이 문제를 해결할 수 있습니다. 머리글을 사용하여 CSV에서 체크리스트 상자를 생성하려고합니다. 그런 다음 해당 칼럼에있는 제목과 데이터가있는 export-cvs 만 체크합니다.Powershell, CSV 및 Checklistbox

헤더와 필드의 양은 다른 CVS에서 변경되므로 하드 코드 할 수 없습니다.

현재 나는 checklistbox의 헤더를 채 웁니다 추적 코드를 사용하지만,

이름, 종, 연령, 품종, 촬영 아래의 모든 한 줄에

Get-Content $list | select -First 1 

쇼를 생성

내가 무엇을하고 싶은지는 다음과 같은 체크 박스 바로 옆에있는 이름을 생성하는 것입니다.

이름 종 나이 번식 샷

그런 다음 체크 필드를 내보내기 -CSV로 가져올 수 있습니다. 덕분에 미리

# # # # # # # # # # # # # # # # # # # # #

올 아웃이 프로그램은 내가 당신을 감사 찾고 있어요 정확히입니다. 하지만 문제는 내가 지금 시도하고 프로그램에 그것을 통합하는 것입니다 나는 그것이 전체 문제가 꽤 큰 하나의 해결사가되기를 바랐지만 이것이 문제가있는 부분입니다. 여기에 원래 코드는

이 부분은 비교 CSV

$MasterBtn_Click={ 
if($openfile.ShowDialog() -eq 'OK') 
{ 
    $MasterTxT.Text = $openfile.FileName 
    $MasterLT = $MasterTxT.Text 
} 

$labelFormHeaders.Text = Get-Content $MasterLT | select -First 1 
} 

을로드하고 난 설명서를했을 것으로, 텍스트 상자의 현재

$buttonStartProcess_Click={ 

$script:CancelLoop = $false 
$buttonCancelProcess.Enabled = $true 

$this.Enabled = $false 

$progressbar1.Value = 0 

for($i = 0; $i -lt $progressbar1.Maximum; $i++) 
{ 
    #---------------------------------------- 


    $col1 = $textbox1.text 
    $col2 = $textbox2.text 
    $col3 = $textbox3.text 
    $col4 = $textbox4.text 
    $col5 = $textbox5.text 
    $col6 = $textbox6.text 

    $list = $EventLt 
    $Data = $MasterLT 


$Userlist = Import-csv -path $list 
$userData = Import-Csv -Path $Data 
$UserOutput = @() 

$Result = "C:\Temp\Results1.csv" 


ForEach ($name in $UserList) 
{ 

    $userMatch = $UserData | where {$_.ID -eq $name.usernames} 
    If($userMatch) 
    { 
     # Process the data 

     $UserOutput += New-Object PsObject -Property @{ID  =$name.usernames; "$col1" = $userMatch.$col1; "$col2" =$userMatch.$col2; "$col3" =$userMatch.$col3;"$col4" =$userMatch.$col4;"$col5" =$userMatch.$col5;"$col6" =$userMatch.$col6} # 

    } 
    else 
    { 
     $UserOutput += New-Object PsObject -Property @{ID =$name.usernames; "$col1" ="NA";"$col2" ="NA";"$col3" ="NA";"$col4" ="NA";"$col5" ="NA";"$col6" ="NA"} 
    } 


} 
$UserOutput | Select-Object "ID","$col1","$col2","$col3","$col4","$col5","$col6" | Export-Csv -Path $Result -NoTypeInformation 

    sleep -Milliseconds 200 



    [System.Windows.Forms.Application]::DoEvents() 

    if($script:CancelLoop -eq $true) 
    { 

     $progressbar1.Value = 0 

     break; 
    } 
    r 
    $progressbar1.PerformStep() 
} 


$this.Enabled = $true 
$buttonCancelProcess.Enabled = $false 
} 

내가이 무리 내 선택 내보내는 것이이 부분 헤더를 입력하십시오. 나는 그것을 제거하고 박스가 체크되고 "$ buttonstartprocess"를 눌렀을 때 체크 박스에서 그 옵션을 가져 와서 내가 원하는 행을 줄 수있는 생성 된 체크 박스리스트를 갖고 싶다. 나는 누구도 잃지 않기를 바래. 다시 한 번 감사드립니다.

+0

이름, 종족 ...은 일련의 필드 이름 (열 이름)입니다. CSV 파일에서 찾으려는 것입니까? 그렇다면, 제가 약간 다른 문제를 해결할 수있는 도구를 가지고 있지만, 적응할 수있는 코드가 포함되어 있습니다. –

답변

0

이와 비슷한?

#get list of header 
$headerlist=import-csv C:\temp\resul2.csv | Get-member -MemberType 'NoteProperty' | Select-Object -ExpandProperty 'Name' 

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 

#create form 
$Form = New-Object System.Windows.Forms.Form  
$Form.Size = New-Object System.Drawing.Size(600,400) 
$Form.text ="Form test" 

#create groupbox for list checkbox 
$groupBox = New-Object System.Windows.Forms.GroupBox 
$groupBox.Location = New-Object System.Drawing.Size(240,20) 
$groupBox.text = "You checkbox items" 
$Form.Controls.Add($groupBox) 

$Checkboxes += New-Object System.Windows.Forms.CheckBox 
$Checkboxes.Location = New-Object System.Drawing.Size(10,20) 

#add checkbox list 
$Checkboxes = @() 
$y = 20 
foreach ($a in $headerlist) 
{  
    $Checkbox = New-Object System.Windows.Forms.CheckBox 
    $Checkbox.Text = $a 
    $Checkbox.Location = New-Object System.Drawing.Size(10,$y) 
    $y += 30 
    $groupBox.Controls.Add($Checkbox) 
    $Checkboxes += $Checkbox 
} 
$groupBox.size = New-Object System.Drawing.Size(200,(40*$checkboxes.Count)) 

#show result 
$form.ShowDialog()| Out-Null 
+0

밖으로 나와 프로그램이 정확히 내가 무엇을 찾고있어 고마워요. 하지만 문제는 내가 지금 시도하고 프로그램에 그것을 통합하는 것입니다 나는 그것이 전체 문제가 꽤 큰 하나의 해결사가되기를 바랐지만, 이것이 문제가있는 부분입니다 – user2457713