Excel连接SharePoint列表仅加载首页30行,如何加载全部分页数据?
针对「数据->其他来源->Web」仅加载30行的处理
用Web方式连接后,默认只抓取页面显示的第一页数据,要加载全部内容,可通过Power Query编辑器手动配置分页:
- 进入「数据」选项卡,点击「启动Power Query编辑器」
- 在编辑器中,选中数据源对应的表格,点击主页选项卡的「高级编辑器」
- 查看当前M代码,找到
Web.Contents或Web.Page的URL部分,替换为SharePoint列表的REST API地址(格式:https://你的域名.sharepoint.com/sites/站点名/_api/web/lists/getbytitle('列表名称')/items?$top=5000),$top参数控制单次最大加载行数,SharePoint默认单次最多返回5000行 - 若列表数据超过5000行,添加自动分页逻辑:参考下方M代码示例,通过
List.Generate循环调用API,每次跳过已加载的行数,直到返回空数据为止,最后合并所有页面的结果
修复SharePoint List连接报错的方法
若你想使用官方的SharePoint List连接方式,先排查常见报错原因:
- 确认站点URL格式正确:必须是站点根地址(如
https://你的域名.sharepoint.com/sites/你的站点名),不要带列表的具体路径 - 检查权限:确保当前登录Excel的账号拥有该列表的读取权限,且能在浏览器正常访问该列表
- 修复Office组件:打开控制面板→程序和功能→找到Microsoft Office→右键选择「更改」→先尝试「快速修复」,无效再选「联机修复」
- 升级Excel:旧版本Excel对现代SharePoint站点的支持有限,升级到最新版本可解决部分兼容性问题
最可靠的方式:用Power Query调用REST API加载全部数据
这种方式不受前端分页限制,能直接获取所有数据:
- 打开Excel,进入「数据」选项卡→「获取数据」→「从其他来源」→「从Web」
- 输入REST API URL:
https://你的域名.sharepoint.com/sites/站点名/_api/web/lists/getbytitle('列表名称')/items?$top=5000 - 选择「Basic」认证,输入SharePoint账号密码,或用组织账户登录
- 进入Power Query编辑器后,若数据超过5000行,替换现有M代码为以下示例(修改站点URL和列表名称):
let BaseUrl = "https://yourdomain.sharepoint.com/sites/你的站点名/_api/web/lists/getbytitle('列表名称')/items", GetPage = (skip as number) => let Url = BaseUrl & "?$top=5000&$skip=" & Text.From(skip), Source = Json.Document(Web.Contents(Url)), Value = Source[value] in Value, Pages = List.Generate( () => [Page = GetPage(0), Skip = 0], each List.Count([Page]) > 0, each [Page = GetPage([Skip] + 5000), Skip = [Skip] + 5000], each [Page] ), CombinedList = List.Combine(Pages), #"转换为表" = Table.FromList(CombinedList, Splitter.SplitByNothing()), #"扩展列1" = Table.ExpandRecordColumn(#"转换为表", "Column1", List.Distinct(List.Combine(List.Transform(CombinedList, Record.FieldNames))) ) in #"扩展列1"
- 运行查询后,即可加载列表的所有数据,再点击「关闭并上载」将数据导入Excel
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

