OneDrive 和 SharePoint

自v0.27.4起,xlwings支持与OneDrive、OneDrive for Business和SharePoint上本地同步的文件一起工作。某些配置将开箱即用,而其他则需要您通过xlwings.conf文件(参见用户配置)或工作簿的xlwings.conf表格(参见工作簿配置)。

注意

本文档适用于同步到本地文件夹的OneDrive和SharePoint文件。这意味着Excel和Python文件都需要在资源管理器/查找器中显示绿色对勾标记为状态——带有云图标的状态将无法工作。如果您想查找有关使用Web上的Excel运行xlwings的文档,请参阅远程解释器.

如果遇到问题,一个简单的解决方法是:

  • 禁用ADD_WORKBOOK_TO_PYTHONPATH设置(可以通过功能区中的复选框或通过xlwings.conf表格中的设置禁用)。

  • 将Python源文件所在的目录添加到PYTHONPATH—再次说明,可以通过功能区或xlwings.conf表格完成。

如果您使用的是PRO版本,则可以嵌入代码来绕过这些问题。

如需更多灵活性,请参考以下解决方案。

OneDrive(个人)

默认设置在Windows和macOS上开箱即用。如果收到错误消息,请添加以下设置并提供正确的OneDrive本地根目录路径。如有可能,请使用环境变量(如示例所示),以便具有相同设置的不同用户也能正常工作:

  • Windows(示例):

    ONEDRIVE_CONSUMER_WIN

    %USERPROFILE%\OneDrive

  • macOS(示例):

    ONEDRIVE_CONSUMER_MAC

    $HOME/OneDrive

OneDrive for Business

  • Windows:默认设置开箱即用。如果收到错误消息,请添加以下设置并提供正确的OneDrive for Business本地根目录路径。如有可能,请使用环境变量(如示例所示),以便具有相同设置的不同用户也能正常工作:

    ONEDRIVE_COMMERCIAL_WIN

    %USERPROFILE%\OneDrive - My Company LLC

  • macOS:macOS始终需要以下设置并提供正确的OneDrive for Business本地根目录路径。如有可能,请使用环境变量(如示例所示),以便具有相同设置的不同用户也能正常工作:

    ONEDRIVE_COMMERCIAL_MAC

    $HOME/OneDrive - My Company LLC

SharePoint(在线和本地)

在Windows上,SharePoint本地根文件夹的位置有时可以从OneDrive环境变量推导出来。但大多数时候,您需要提供以下设置(在macOS上这是必须的):sometimes be derived from the OneDrive environment variables. Most of the time though, you’ll have to provide the following setting (on macOS this is a must):

  • Windows:

    SHAREPOINT_WIN

    %USERPROFILE%\My Company LLC

  • macOS:

    SHAREPOINT_MAC

    $HOME/My Company LLC

实现细节与限制

很多xlwings的功能依赖于工作簿的FullName属性(通过VBA/COM),除非文件保存在OneDrive、OneDrive for Business或SharePoint上且启用了自动保存,否则它返回文件的本地路径。启用自动保存时,它返回一个URL。

OneDrive和OneDrive for Business的URL可以相对直接地转换为本地等效路径。不过,您需要知道本地驱动器的根目录:在Windows上,这些通常通过环境变量提供给OneDrive。而在macOS上,它们不存在,这就是为什么您需要提供OneDrive的根目录的原因。在Windows上,SharePoint的根目录有时也可以从环境变量推导出来,但这并不保证。在macOS上,则无论如何都需要您提供根目录。

不幸的是,SharePoint允许您以任何方式映射驱动器,并且没有可靠的方法来获取这些文件的本地路径。在Windows上,xlwings首先检查注册表以获取映射。如果这不起作用,xlwings会检查本地路径是否通过使用默认值进行映射,并且如果找不到文件,它会检查所有现有的SharePoint本地文件。如果找到同名的文件,它将使用该文件。然而,如果找到多个同名的文件,您将收到错误消息。在这种情况下,您可以将文件重命名为在整个本地同步的SharePoint文件中唯一的名字,或者更改SHAREPOINT_WIN/MAC设置以不在根文件夹处停止,而是包括更多的文件夹。例如,假设您在本地SharePoint上有以下文件结构:

My Company LLC/
└── sitename1/
    └── myfile.xlsx
└── sitename2 - Documents/
    └── myfile.xlsx

在这种情况下,您可以重命名其中一个文件,或者添加超出根文件夹的路径(最好是在xlwings.conf表格下):

SHAREPOINT_WIN

%USERPROFILE%/My Company LLC/sitename2 - Documents