我使用在本地SharePoint上发布的Excel Services有一个工作代码:
var _service = new ExcelService { UseDefaultCredentials = true };
Status[] _status;
var _sessionId = _service.OpenWorkbookForEditing("http://<sharepoint url>/<list>/<file>.xlsx", "en-US", "en-US", out _status);
ExcelService
是指向http://<sharepoint url>/_vti_bin/excelservice.asmx
但是,在SharePoint Online上使用Excel Services时,相同的代码不起作用。
我可以获得API版本:
_service.GetApiVersion(out _status);
Excel Web Services(16.0)
但是打开工作簿会引发SoapException
:
我们找不到您想要的文件。
我尝试传递凭据:
var _pass = new SecureString();
foreach (char _c in "<SP Online password>".ToCharArray()) { _pass.AppendChar(_c); }
var _cred = new SharePointOnlineCredentials("<SP Online login>", _pass);
var _service = new ExcelService { Credentials = _cred };
凭据似乎有效,即此代码有效:
// login test
using (ClientContext _sp = new ClientContext("<SP Online url>") { Credentials = _cred })
{
var _web = _sp.Web;
_sp.Load(_web);
_sp.ExecuteQuery();
Console.WriteLine(_web.Title);
}
我错过了什么?
注意,我可以使用Excel REST API,但这在我的场景中不起作用(大量编辑)。