将所有列及其数据值导出到列表中

Export all the columns with their data values in a list

我必须导出特定 SharePoint 列表中的所有列以及列中包含的数据。

我目前能够获取所有列名但不能获取数据。需要帮助。下面是我的代码。

$url = "$url"
$listName = "$list"
$path ="c:\ColumnsOfList.csv"

$web = Get-SPWeb $url
$list = $web.Lists.TryGetList($listName)
$list.ContentTypes | % { $_.FieldLinks } | select Name |  Export-Csv -Path $path

有几种不同的方法可以做到这一点,但要了解的重要一点是您需要遍历列表中的项目(而不仅仅是遍历列表中的字段)。

$url = "$url"
$listName = "$list"
$path ="c:\ColumnsOfList.csv"

$web = Get-SPWeb $url
$list = $web.Lists.TryGetList($listName)
$fields = $list.ContentTypes | %{ $_.FieldLinks } | select Name
$items = @() #array to store objects representing list items
$list.items | %{ 
    $item = $_; 
    $hash = @{}; #hash table to store field name-value pairs
    $fields | %{ $hash[$_.Name] = $item[$_.Name]  }; 
    $items += new-object psobject -Property $hash }
$items | Export-Csv -Path $path

请注意,此方法会尝试获取列表中的所有项目,这可能效率低下,并且如果列表超过列表视图阈值(默认限制为 5000 个项目),则会失败。

要访问过滤后的列表项子集,请使用适当的 CAML 创建 SPQuery 对象以 select 所需的项,然后调用 $list.GetItems($spquery) 而不是访问 $list.items 属性直接。

Edit: Updated code to export display names of columns instead of internal names

$url = "$url"
$listName = "$list"
$path ="c:\ColumnsOfList.csv"

$web = Get-SPWeb $url
$list = $web.Lists.TryGetList($listName)
$fields = $list.ContentTypes | %{ $_.FieldLinks } | select Name, DisplayName
$items = @() #array to store objects representing list items
$list.items | %{ 
    $item = $_; 
    $hash = @{}; #hash table to store field name-value pairs
    $fields | %{ $hash[$_.DisplayName] = $item[$_.Name]  }; 
    $items += new-object psobject -Property $hash }
$items | Export-Csv -Path $path