2016-11-16 5 views
-2

vielleicht kann mir jemand dabei helfen. Ich versuche, eine Checklisten-Box aus einer CSV zu generieren, nur mit den Kopfzeilen. Dann nur Export-cvs mit den Titeln und Daten in dieser Spalte, die ich überprüftePowershell, CSV und Checklistbox

die Überschrift und die Menge der Felder ändert sich mit den verschiedenen CVS ich benutze, so kann ich es nicht hart Code.

derzeit verwende ich die Folge Code, den die Header in den CheckListBox auffüllt, aber es erzeugt in einer Zeile

Get-Content $list | select -First 1 

zeigt unter

Namen, Art, Alter, Rasse, Schüssen

was ich möchte, dass es die Namen direkt neben einer Checkbox wie dieser erzeugt

Name Art Alter Rasse Aufnahmen

dann kann ich weitermachen, um die Check-Felder zu exportieren-CSV. Dank der Zeit voraus

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

die kommen ist Programm ist genau das, was ich für danken Ihnen suchen. aber das Problem, das ich jetzt habe, ist zu versuchen, es in das Programm zu integrieren, ich hatte gehofft, es war ein One Line Fixierer das ganze Problem ist ziemlich groß, aber das ist der Teil, mit dem ich Probleme habe. hier ist der ursprüngliche Code

Dieser Teil

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

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

Dieser Teil vergleicht die CSV laden würde und meine Entscheidungen exportieren

$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 
} 

derzeit Ich habe eine Reihe von Textfeldern, dass ich in der Hand hätte Geben Sie die Kopfzeilen ein. Ich möchte das beseitigen und eine generierte checkbox-Liste haben, die, wenn ein Kasten überprüft wird und ich den "$ buttonstartprocess" trete, zieht es jene Wahlen vom Checkbox und gibt mir die Reihen, die ich will. hoffe ich verliere niemanden. Danke nochmal.

+0

Es klingt wie Name, Spezies, ... ist eine Reihe von Feldnamen (Spaltennamen). Versuchen Sie das aus der CSV-Datei herauszufinden? Wenn ja, habe ich ein Tool, das ich poste, das ein etwas anderes Problem löst, aber Code enthält, den Sie möglicherweise anpassen können. –

Antwort

0

So ähnlich?

#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

das out come ist Programm ist genau das, was ich suche danke. aber das Problem, das ich jetzt habe, ist zu versuchen, es in das Programm zu integrieren, ich hatte gehofft, es war ein One Line Fixierer das ganze Problem ist ziemlich groß, aber das ist der Teil, mit dem ich Probleme habe – user2457713