2017-03-17 70 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