【问题标题】:POSH: Export Listview to CSVPOSH:将列表视图导出为 CSV
【发布时间】:2014-06-30 12:31:12
【问题描述】:

我有一个包含 6 列的列表视图,我想将它们导出为 CSV

第 1 列;第 2 列;第 3 列 数据1;数据2;数据3

我认为我应该可以使用 Listview1.Items |导出-csv C:\temp\test.csv 但我得到的只是列表视图对话框而不是 Items.SubItems.text

function GenerateForm {

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$listView1 = New-Object System.Windows.Forms.ListView
$columnHeader1 = New-Object System.Windows.Forms.ColumnHeader
$columnHeader2 = New-Object System.Windows.Forms.ColumnHeader
$columnHeader3 = New-Object System.Windows.Forms.ColumnHeader
$columnHeader4 = New-Object System.Windows.Forms.ColumnHeader
$columnHeader5 = New-Object System.Windows.Forms.ColumnHeader
$columnHeader6 = New-Object System.Windows.Forms.ColumnHeader
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 471
$System_Drawing_Size.Width = 931
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "Primal Form"


$listView1.Columns.Add($columnHeader1)|Out-Null
$listView1.Columns.Add($columnHeader2)|Out-Null
$listView1.Columns.Add($columnHeader3)|Out-Null
$listView1.Columns.Add($columnHeader4)|Out-Null
$listView1.Columns.Add($columnHeader5)|Out-Null
$listView1.Columns.Add($columnHeader6)|Out-Null
$listView1.DataBindings.DefaultDataSourceUpdateMode = 0
$listView1.FullRowSelect = $True
$listView1.GridLines = $True
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$listView1.Location = $System_Drawing_Point
$listView1.Name = "listView1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 447
$System_Drawing_Size.Width = 907
$listView1.Size = $System_Drawing_Size
$listView1.TabIndex = 0
$listView1.UseCompatibleStateImageBehavior = $False
$listView1.View = 1

$form1.Controls.Add($listView1)

$columnHeader1.Width = 102
$columnHeader2.Width = 134
$columnHeader3.Width = 147
$columnHeader4.Width = 149
$columnHeader5.Width = 91
$columnHeader6.Width = 194

#endregion Generated Form Code

#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm

【问题讨论】:

    标签: listview powershell export-to-csv


    【解决方案1】:

    您好,我自己解决了这个问题,但如果可能的话,我宁愿不喜欢使用 Foreach 循环。

    所以如果有人有更好的主意,请告诉我们!

    Function Export-lvData {
        $CsvArray = @()
        $listView1.Items | %{
            $Object = New-Object PSObject
            $lvItem = $_
            $listview1.Columns | %{
                $Object | add-member Noteproperty -Name $_.Text -Value  $lvItem.SubItems[$_.index].text -Force
            }
            $CsvArray += $Object
            Remove-Variable Object
        }
        Return ,$CsvArray
    }
    

    返回 CsvArray 后,我可以将输出通过管道传输到 Export-csv -notype

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2021-08-16
      • 2015-11-06
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多