/// <summary> /// Iterated through spreadsheet and imports items to Global navigation list. /// </summary> /// <returns></returns> private static ImportResult ImportSubmissionItemsFromSpreadSheet(FileInfo file, ClientContext ctx) { _logs = new List <LogItem>(); using (var package = new ExcelPackage(file)) { if (!file.Name.EndsWith(".xlsx")) { return(ImportResult.IncorrectFileFormat); } var ws = package.Workbook.Worksheets[1]; if (ws == null) { return(ImportResult.IncorrectFileFormat); } if (!IsSpreadsheetValid(ws)) { return(ImportResult.IncorrectFileFormat); } var dt = GetDataTableFromSpreadsheet(file); if (dt == null || dt.Rows.Count == 0) { return(ImportResult.None); } Log($"Start Time: {DateTime.Now}"); _logs.Add(new LogItem(LogCategory.RowCount, dt.Rows.Count)); TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(ctx); ctx.Load(taxonomySession, ts => ts.TermStores); ctx.ExecuteQuery(); var termStore = taxonomySession.GetDefaultSiteCollectionTermStore(); /*ctx.Load(termStore, * store => store.Groups.Include(group => group.TermSets)); * ctx.ExecuteQuery(); * * ctx.Load(termStore.Groups); * ctx.ExecuteQuery();*/ TermGroup termGroup = termStore.GetSiteCollectionGroup(ctx.Site, false); ctx.Load(termGroup); ctx.Load(termGroup.TermSets); ctx.ExecuteQuery(); foreach (var termSet in termGroup.TermSets) { var allTerms = termSet.GetAllTerms(); ctx.Load(allTerms); ctx.ExecuteQuery(); termsetDictionary.Add(termSet.Name, allTerms); } var lists = WorksheetToListMap.GroupBy(x => x.ListName); foreach (var list in lists) { var listName = list.Key; if (string.IsNullOrEmpty(listName)) { continue; } var columnNames = WorksheetToListMap.Where(x => x.ListName == listName).Select(x => x.ListColumnName); for (int i = 0; i < dt.Rows.Count; i++) { if (i <= 1) { continue; } var row = dt.Rows[i]; try { ImportRow(ctx, termGroup, listName, row, columnNames.ToArray(), i, ref _logs); } catch (Exception ex) { //if (Debugger.IsAttached) Debugger.Break(); _logs.Add(new LogItem(LogCategory.Exceptions, ex.Message)); } } } } _logs.Add(new LogItem(LogCategory.DoneMessage, "Done")); WriteToLog(_logs); Log($"End Time: {DateTime.Now}"); return(ImportResult.None); }