2016-11-16 7 views
-2

多分誰かが私を助けることができます。私はヘッダーを使用してCSVからチェックリストボックスを生成しようとしています。その後、その列のタイトルとデータを持つexport-cvsだけをチェックします。Powershell、CSV、Checklistbox

ヘッダーとフィールドの量は使用するCVSによって変わりますので、ハードコードはできません。

現在、私はchecklistboxにヘッダを移入フォローコードを使用しますが、それは

名、種、年齢、品種、ショット

以下のすべて1行に

Get-Content $list | select -First 1 

ショーを生成し、

このようなチェックボックスの横にある名前を生成するだけです。

名前 種 年齢年齢 品種 ショット

私はチェックフィールドをexport-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

アウトはプログラムがまさに私があなたにお礼を探しているものです。しかし、私が今問題となっているのは、プログラムに組み込んでみることです。私はそれが1行の解決策であり、全体の問題はかなり大きいと思っていましたが、これは私が問題を抱えている部分です – user2457713