Supongamos que tenemos un archivo .csv con el siguiente contenido
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