2012-05-15 2 views
0

У нас есть кто-то вручную загружать еженедельно созданные таблицы Excel в SharePoint. Я уверен, что есть способ автоматизировать это. Я не очень много знаю о SharePoint, и, возможно, это так просто, как просто знать, как папка SharePoint перемещает файлы и копирует их прямо там. Или, может быть, для программирования требуется автоматическое загрузку новых файлов, помещенных в данный каталог в SharePoint.Как автоматически загружать файлы в SharePoint

В любом случае, я просто хотел бы, чтобы кто-то указал мне в правильном направлении здесь.

ответ

2

Вам необходимо загрузить файл, используя веб-службу копирования в SharePoint. Я не уверен, какую версию SharePoint вы используете, но я предполагаю 2007. Вот пример project.

public void UploadFile(string destinationFolderPath, 
         byte[] fileBytes, 
         string fileName, 
         bool overwrite, 
         string sourceFileUrl, 
         string lastVersionUrl) 
{ 

List<Sharepoint.FieldInformation> fields = new List<Sharepoint.FieldInformation>(); 
Sharepoint.FieldInformation fieldInfo; 

fieldInfo = new Sharepoint.FieldInformation(); 
fieldInfo.Id = Microsoft.SharePoint.SPBuiltInFieldId.Title; 
fieldInfo.Value = "New title"; 
fieldInfo.DisplayName = "Title"; 
fieldInfo.Type = YetAnotherMigrationTool.Library.SP2007.Sharepoint.FieldType.Text; 
fieldInfo.InternalName = "Title"; 
fields.Add(fieldInfo); 

string[] url; 
if (string.IsNullOrEmpty(destinationFolderPath)) 
    url = new string[] { string.Format("{0}/{1}/{2}", _siteUrl, _name, fileName) }; 
else 
    url = new string[] { string.Format("{0}/{1}/{2}{3}", _siteUrl, _name, destinationFolderPath, fileName) }; 
Sharepoint.CopyResult[] result; 

Sharepoint.Copy service = new Sharepoint.Copy(); 
service.Url = _siteUrl + "/_vti_bin/Copy.asmx"; 
service.Credentials = new NetworkCredential(Settings.Instance.User, Settings.Instance.Password); 
service.Timeout = 600000; 

uint documentId = service.CopyIntoItems(sourceFileUrl, url, fields.ToArray(), fileBytes, out result); 
} 

public void SetContentType(List<string> ids, string contentType) 
{ 
ListsService.Lists service = new YetAnotherMigrationTool.Library.SP2007.ListsService.Lists(); 
service.Url = _siteUrl + "/_vti_bin/Lists.asmx"; 
service.Credentials = new NetworkCredential(Settings.Instance.User, Settings.Instance.Password); 

string strBatch = ""; 
for (int i = 1; i <= ids.Count; i++) 
{ 
    strBatch += @"<Method ID='"+i.ToString()[email protected]"' Cmd='Update'><Field Name='ID'>" + ids[i-1] + "</Field><Field Name='ContentType'>"+contentType+"</Field></Method>"; 
} 
XmlDocument xmlDoc = new XmlDocument(); 
XmlElement elBatch = xmlDoc.CreateElement("Batch"); 
elBatch.SetAttribute("OnError", "Continue"); 
elBatch.SetAttribute("ListVersion", "10"); 
elBatch.SetAttribute("ViewName", ""); 
elBatch.InnerXml = strBatch; 

result = service.UpdateListItems(_name, elBatch); 
} 
+0

Извините, забыл упомянуть об этом SP 2010. Не уверен, что это имеет значение или нет ... –

+0

Этого не должно быть. Веб-службы по-прежнему доступны. –

+0

Удивительный, спасибо. –

2

Вы могли бы написать сценарий PowerShell, который копирует документ в библиотеку документов через WebDav:

Предполагая, что у вас есть библиотека документов на HTTP: // сервер/SomeWeb/DocumentLibrary/Папка:

copy-item somesheet.xlsx \\server\SomeWeb\DocumentLibrary\Folder 
+0

Я действительно никогда раньше не использовал PowerShell, хотя я часто говорил себе, что мне нужно изучить его. Является ли команда «copy-item» командой powershell или это функция, которую я должен был бы написать? –

+0

Copy-Item - это встроенная команда PowerShell. – Stefan

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