domingo, 21 de septiembre de 2014

Crear una estructura de folders mediante un archivo .csv con Client Object Model

Supongamos que tenemos un archivo .csv con el siguiente contenido

image

Todas las carpetas están separadas mediante una coma (,)

El sitio donde se creará esta estructura, tiene la siguiente url: http://sharepointsite.com.

La librería donde se crea la estructura, se llama “Proyectos”

El archivo csv, se encuentra en el siguiente path: E:\TEMP\carpetas.csv

El código para crear la estructura de carpetas es la siguiente:

Code:
using (ClientContext clientContext = new ClientContext("http://sharepointsite.com"))
{
Web web = clientContext.Web;
Microsoft.SharePoint.ClientList docLib = web.Lists.GetByTitle("Proyectos");
var folderRoot = docLib.RootFolder;
clientContext.Load(folderRoot);
clientContext.ExecuteQuery();

using (StreamReader file = new System.IOStreamReader(@"E:\TEMP\carpetas.csv"))
{
while (!file.EndOfStream)
{
string line = file.ReadLine();
string[] listaFolders = line.Split(new Char[] { ',' });
string estructuraFolders = "";

foreach (var folder in listaFolders)
{
estructuraFolders = estructuraFolders + "/" + folder;
}
if (estructuraFolders != "/")
{
Folder NewFolder = EnsureFolder(clientContext, folderRoot, estructuraFolders);
}
}

}
}


 


Y el método EnsureFolder hace lo siguiente:




Code:
public static Folder EnsureFolder(ClientContext ctx, Folder ParentFolder, string FolderPath)
{
string[] PathElements = FolderPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
string Head = PathElements[0];
Folder NewFolder = ParentFolder.Folders.Add(Head);
ctx.Load(NewFolder);
ctx.ExecuteQuery();
if (PathElements.Length > 1)
{
string Tail = string.Empty;
for (int i = 1; i < PathElements.Length; i++)
Tail = Tail + "/" + PathElements[i];

return EnsureFolder(ctx, NewFolder, Tail);
}
else
return NewFolder;
}

No hay comentarios:

Publicar un comentario