Exemple #1
0
        /// <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);
        }