我在excel
中收到了超过6000个数据,这些数据需要导入到包含查询列的现有SharePoint
列表中。
例如,如果我在Excel中有列名Country
,我希望将此列中的数据插入SharePoint列表中的查找列Country
。我尝试使用访问数据库,但它没有用。
使用除JSOM
以外的access
或Powershell
还有其他方式吗? (不能使用powershell或任何服务器端编码)。
答案 0 :(得分:0)
我认为列表中的查找字段与excel中的查找字段不同。您不能将我从excel链接到列表列的任何查找或公式链接到列表列,也不能将excel列映射到列表查找字段。可能您可能必须从列表中添加数据,然后在列表中创建类似的“国家/地区”字段,但手动创建SharePoint列表查找字段。毫无疑问,这可以在没有CSOM代码和使用一些excel工具(如Open XML SDK)的情况下实现自动化。
答案 1 :(得分: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());
首先通过CAML查询获取listItem,然后通过FieldLookupValue对象设置值
祝你好运!