0

Я получил более 6000 данных в excel, которые необходимо импортировать в существующий список SharePoint, содержащий столбцы поиска.Импорт данных Excel для поиска столбцов в списке SharePoint

Например, если у меня есть имя столбца Country в excel, я хочу, чтобы данные в этом столбце были вставлены в столбец поиска Country в списке SharePoint. Я попытался использовать db доступа, и это не сработало.

Есть ли другой способ использования JSOM или access кроме Powershell? (не может использовать powershell или любое кодирование на стороне сервера).

ответ

0

Я думаю, что поля поиска в списках отличаются от полей поиска в excel. Вы не можете связать какой-либо поиск или формулы из excel в столбец списка, как из того, что я помню, также не отображалось также отображение поля excel column to list lookup. Возможно, вам, возможно, придется добавить данные из списка, а затем создать аналогичное поле «Страна» в списке, но как поле поиска SharePoint List вручную. Сомневайтесь, что это можно автоматизировать без кода CSOM и использования некоторых инструментов excel, таких как Open XML SDK.

0

Что вам нужно сделать, это сохранить файл Excel в CSV-файл (избегая подхода openXML, который сделает вещи более сложными, чем они). Тогда в C# можно использовать System.IO.File, чтобы прочитать файл и цикл по каждой строке

string[] _fileData = System.IO.File.ReadAllLines(_filePath); 

_fileData будет многомерный массив, для строк и столбцов.

Заполнение поля поиска, вы можете использовать CSOM для достижения этого. Смотрите этот пример кода, я скопированный из: https://karinebosch.wordpress.com/2015/05/11/setting-the-value-of-a-lookup-field-using-csom/

CamlQuery camlQueryForItem = new CamlQuery(); 
camlQueryForItem.ViewXml = string.Format(@"<View> 
      <Query> 
       <Where> 
       <Eq> 
        <FieldRef Name='{0}'/> 
        <Value Type='{1}'>{2}</Value> 
       </Eq> 
       </Where> 
      </Query> 
    </View>", lookupFieldName, lookupFieldType, value); 

    listItemCollection listItems = list.GetItems(camlQueryForItem); 
    clientContext.Load(listItems, items => items.Include 
            (listItem => listItem["ID"], 
            listItem => listItem[lookupFieldName])); 
    clientContext.ExecuteQuery(); 

    if (listItems != null) 
    { 
     ListItem item = listItems[0]; 
     lookupValue = new FieldLookupValue(); 
     lookupValue.LookupId = Int.Parse(item["ID"].ToString()); 

Таким образом, вы сначала получаете ListItem через запрос CAML, а затем установите значение через объект FieldLookupValue

Удачи!

Смежные вопросы