2017-03-17 69 views

回答

0

你可以做到。但是,在SharePoint列表中没有任何除ID之外的唯一列。您的CSV可能没有该ID。所以你应该在CSV和SP列表中都有唯一的calue列。获取DataTable中的CSV和SharePoint列表中的所有行,并比较两个DataTable以获取不同的值并将这些行上载到SP列表中。

+0

我不知道该怎么CSV比较列表。我得到比较,并得到两个列表中缺少的元素....但我需要将它与列表进行比较。我可以从条件“$ _ ['Code'] -ne $ row.code - 和$ _ ['code2'] -ne $ row.code2” – zaknafein

0

我相信CSV中的数据与列表中的数据顺序相同,即您的CSV的第一行将与ID以降序排列的第一列数据进行比较。

在CSV标题名称应该与列表列相同。

导入CSV并通过各行迭代,还分别获得listItems中,比较列,这样的事情:

$SPWeb = Get-SPWeb http://mysharepoint.org 
$SPList = $SPWeb.Lists["My List"] 

$listItems = $SPList.GetItems() 

##Import your CSV 
$csv = Import-Csv "D:\Test.csv" 
$counter=0 

foreach ($item in $csv)   
{ 

    if($listItems[$counter]["Column"] -ne $item.Column) 
    { 
     #Fetch that item by ID and Update 
     $SPListItem = $SPList.GetItemByUniqueId($listItems[$counter]['ID']) 
     $SPListItem["Column"] = $item.Column 
     $SPListItem.Update() 
     $counter=$counter+1 

    } 

} 

我已经做了一列,它可以为列数n来完成。

这是我的第一个回答,请让我知道它的工作:)

+0

中得到一个值,这是行不通的。我需要添加不在列表中的项目,但有csv。我定义的唯一元素:$ list.items | where-object {$ _ ['code'] -eq $ row.code}。该列表包含许多元素。 – zaknafein