Il y a différentes manières d'importer des données d'une feuille de calcul dans une liste SharePoint. Selon vos besoins, vous pouvez copier des données dans des listes SharePoint en utilisant le mode feuille de données, par exemple. Cependant, il existe certaines circonstances où cela ne fonctionnera pas (c.-à-d., pas de support pour certains champs dans l'affichage feuille de données, et dans ce cas vous avez besoin d'utiliser une approche différente. 

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) :

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 »)
  • EMPLOYEE_TYPE (capitaine, second capitaine, etc.)


  • #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 :