Microsoft Office Document显示Sharepoint URL而不是Local

时间:2014-12-08 07:30:11

标签: c# sharepoint office-interop onedrive

情况:OneDrive for Business将文件从Sharepoint站点文档库同步到本地目录:

C:\Users\users\Sharepoint\Library\Test.pttx

但是使用PowerPoint InterOp:

presentation.Path

时:

https://company.sharepoint.com/Library/Shared%20Documents/

Sharepoint的正确路径是什么。

如何访问本地目录?

更新:我在MSDN上找到similar question但没有回答

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你想在Powerpoint(VSTO)中找到同步目录的本地路径吗? Powerpoint对象模型中的方法,如 presentation.GetLocalPath()

我不知道为什么(在问题的MSDN link中)MSFT CSG工程师说这是不可能的。

  

对不起,经过进一步调查后,这是错误的   impossble。对于Word应用程序,该文件存储在   OneDrive和"离线"是OneDrive的缓存模式,它是   对Word应用程序透明(Word应用程序只知道它是一个   在OneDrive上的文档),所以当你检查打开的位置   文件,位置是" http:/d.docs.live.net/xxxx/xx.docx"宁   而不是" C:\ XXX \ XXX"。

本文向您展示了如何Change the location where you sync SharePoint libraries on your computer。显然,Powerpoint Interop库中没有一种方法,但它绝对可行。

1)我的第一个想法是查看OneDrive for Business同步应用程序向导是否保存任何注册表项或类似内容(使用ProcessMonitor),但它可能将本地目录存储在云中。

2)我的第二个想法是在框外,只需将文本文件放在https://company.sharepoint.com/Library/Shared%20Documents/LocalDrivePath.txt中,然后创建一个名为presentation.GetLocalPath()的扩展方法,并使用WebClient类下载字符串。

enter image description here

伪代码:

public string GetLocalPath(this Microsoft.Office.Interop.PowerPoint.Presentation presentation)
{
    WebClient client = new WebClient();
    string localPath = client.DownloadString(presentation.Path + "LocalDrivePath.txt");

    //Some good old protective programming to quickly identify the problem if the file doesn't exist
    if (!string.IsNullOrEmpty(localPath)) throw new Exception("Issue: LocalDrivePath.txt not found in " + presentation.Path + Environment.Newline + "Please add the file for this Office Documents' sync'd (offline) local folder to be identified.");

    return localPath;
}

这样称呼:

presentation.GetLocalPath();

答案 1 :(得分:2)

根据此post,可以在此多字符串注册表值中查找已同步的文件夹:

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common \Internet\LocalSyncClientDiskLocation

鉴于您的本地路径和SharePoint URL看起来像

C:\Users\User\SharePoint\Library - Documents\Folder\SubFolder\Document.pptxhttps://***.sharepoint.com/Library/Shared%20Documents/Folder/SubFolder/Document.pptx

您可以尝试从URL中提取本地部分Folder/SubFolder/Document.pptx,将其添加到从注册表值检索的本地文件夹路径中,并检查文件是否存在。