You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用O365 Python API下载SharePoint列表至DataFrame并更新?

使用python-o365操作SharePoint列表:下载为DataFrame及更新项

一、将SharePoint列表下载为Pandas DataFrame

你的代码可以优化,直接利用列表的字段定义获取准确列名,避免收集冗余系统属性。以下是改进后的实现:

from O365.sharepoint import Site
import pandas as pd

def get_list_items(site: Site, list_name: str) -> pd.DataFrame:
    target_list = site.get_list_by_name(display_name=list_name)
    # 获取列表字段的内部名称与显示名映射
    list_fields = {field.internal_name: field.display_name for field in target_list.fields}
    
    list_items = target_list.get_items()
    data = []
    
    for item in list_items:
        item_data = {}
        # 按列表定义的字段提取值,用显示名作为DataFrame列名
        for internal_name, display_name in list_fields.items():
            item_data[display_name] = item.properties.get(internal_name)
        data.append(item_data)
    
    return pd.DataFrame(data)

关键优化说明:

  • 直接通过target_list.fields获取官方定义的字段,过滤item.properties中的冗余系统字段(如Created、ModifiedBy)
  • 针对特殊类型字段可额外处理,比如日期字段转换:
    # 示例:将Modified字段转为datetime类型
    item_data[display_name] = pd.to_datetime(item.properties.get(internal_name)) if internal_name == "Modified" else item.properties.get(internal_name)
    

二、更新SharePoint列表项

更新列表项需先获取目标item对象,修改属性后提交更改:

def update_list_item(site: Site, list_name: str, item_id: int, update_data: dict):
    target_list = site.get_list_by_name(display_name=list_name)
    # 通过ID定位要更新的项
    target_item = target_list.get_item_by_id(item_id)
    
    # 用字段内部名称赋值
    for internal_name, new_value in update_data.items():
        target_item.properties[internal_name] = new_value
    
    # 提交更新请求
    target_item.update()

使用示例:

# 更新ID为1的项,修改Title和Amount字段
update_data = {
    "Title": "新标题",
    "Amount": 100
}
update_list_item(your_site_instance, "你的列表名称", 1, update_data)

注意事项:

  • 必须使用字段的内部名称修改属性,可通过target_list.fields查看映射关系
  • 特殊类型字段需传入对应格式值:比如查找字段需传{"LookupId": 目标ID},人员字段需传用户ID或邮箱对应结构
  • 确保应用账号拥有列表编辑权限

内容的提问来源于stack exchange,提问作者Godspower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:29:56