En PowerShell !
PowerShell peut gérer l'importation de dizaines, de centaines, de milliers, de dizaines de milliers, voire de centaines de milliers d'éléments depuis un fichier CSV. Il peut manipuler les données avant de les insérer, et il prend en charge l'insertion de données dans tous types de champ SharePoint. Il peut aussi automatiquement approuver des éléments (si la liste nécessite l'approbation des éléments), enrichir les données avec des informations supplémentaires (par exemple faire une recherche sur les données importées, les associer avec d'autres colonnes, effectuer la validation, etc.).
La procédure de base pour importer des données avec PowerShell est la suivante :
Enregistrez la feuille de calcul Excel dans un fichier CSV, récupérez le fichier CSV à l'aide de Import-CSV, listez chaque ligne du fichier CSV et enfin, ajoutez chaque ligne dans la liste SharePoint. A chaque parcours de ligne du fichier CSV, vous pouvez effectuer une manipulation de données avant d'enregistrer l'élément dans la liste.
Ici, les exemples importent un fichier CSV nommé VesselInPortReport.csv, qui contient des données concernant des navires d'une compagnie qui se déplacent dans un port d'expédition.
Le fichier CSV comporte les colonnes suivantes (rubriques) :
- TRIP_NO
- VESSEL_NAME
- DRAPEAU
- AGENT_NAME
- CURRENT_LOCATION
- RPT_DATE
- EMPLOYEE (enregistré comme nom de personne, par exemple « Matthew Yarlett »)
- EMPLOYEE_TYPE (capitaine, second capitaine, etc.)
Exemple : Récupérez le fichier CSV et parcourez les éléments, écrivez la colonne « VESSEL_NAME » pour chaque élément dans la console
EMPLOYEE (enregistré comme nom de personne, par exemple « Matthew Yarlett »)
#Get the CSV file and connect to the SharePoint list
$vessellist = import-csv -Path
"C:\Temp\VesselInPortReport.csv"
$itemCount = $vessellist.Count;
$currentItem = 1;
foreach
($item
in
$vessellist)
{
#Update the progress information
Write-Progress -Id 1 -ParentId 0 -Activity
"Listing Data In CSV File"
-PercentComplete
(($currentItem/$itemCount)*100) -Status
"Item $currentItem or $itemCount"
;
$currentItem++;
#Write the rows VESSEL_NAME column to the console
Write-Host $item.VESSEL_NAME;
}
Exemple : Récupérez le fichier CSV et parcourez les éléments, en ajoutant chaque élément comme un nouvel élément de liste dans la liste SharePoint VesselsInPort. Cet exemple montre comment effectuer un cast des données du fichier CSV dans des champs SharePoint de type différent : Texte, Nombre, Utilisateur (Personne), Choix. Il affiche des informations sur la progression à chaque fois qu'un élément est ajouté, à l'aide de Write-Progress.
#Get the CSV file and connect to the SharePoint list
$vessellist = import-csv -Path
"C:\Temp\VesselInPortReport.csv"
#Get the list used to import the data to
$l = (Get-Spweb
"http://corporate "
).GetList(
"http://corporate/Lists/VesselsInPort "
)
#Get the lists EmployeeType field (choice)
$employeeType = $l.Fields[
"EmployeeType"
] -
as
[Microsoft.SharePoint.SPFieldChoice]
#Loop through the items and add them to the list
$r = 1;
$itemCount = $vessellist.Count;
$currentItem = 1;
foreach
($item
in
$vessellist)
{
Write-Progress -Id 1 -ParentId 0 -Activity
"Importing Data From CSV into SharePoint"
-PercentComplete
(($currentItem/$itemCount)*100) -Status
"Adding item $currentItem or $itemCount"
;
$currentItem++;
$ni = $l.items.Add();
#Add the Title, using the rows VESSEL_NAME column
$ni[
"Title"
] = $item.VESSEL_NAME;
#Add the "Date Recorded" field, using the csv rows "RPT_DATE" column
[DateTime]$rd = New-Object System.DateTime;
if
([DateTime]::TryParse($item.RPT_DATE, [
ref
]$rd)){
$ni[
"Date Recorded"
] = $rd;
}
#Add the csv rows "TRIP_NO" column to the new list items "Trip Id" field (Sspan>  PFieldNumber)
[Int64]$tn = New-Object System.Int64;
if
([Int64]::TryParse($item.TRIP_NO, [
ref
]
$tn)){
$ni[
"Trip Id"
] = $tn;
}
#Add some other text properties
$ni[
"Flag"
] = $item.FLAG;
$ni[
"Agent Name"
] = $item.AGENT_NAME;
$ni[
"Current Location"
] = $item.CURRENT_LOCATION;
#Add user information
$ni[
"employee"
] = $w.EnsureUser($item.EMPLOYEE); #In
this
case
,
the $item.EMPLOYEE value from the spreadsheet
is
a persons name. Eg.
"Matthew Yarlett"
$employeeType.ParseAndSetValue($ni,$item.EMPLOYEE_TYPE); #In
this
case
,
the $item.EMPLOYEE_TYPE value from the spreadsheet
is
valid choice present
in
the
EmployeeType list field. Eg.
"Manager"
#Update the item
$ni.Update()
Write-Host ([String]::Format(
"Added record:{0}"
,$r));
$r++;
}
Importer des données depuis Excel a été demandé dans les forums suivants :
How to programmatically import Excel into existing SharePoint list?
How to copy Excel sheet data to SharePoint 2010 List?
Autres langues disponibles
Cet article est également disponible dans les langues suivantes :