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

如何在Power BI中动态提取多URL对应PDF文件的多表格数据?

动态提取多URL中PDF的所有表格(Power Query M)

问题背景

现有Power Query M代码仅能固定提取单个PDF指定页面的表格,无法适配多个PDF URL、每个PDF内表格数量/页面不固定的场景,需要改为动态获取所有表格并整合。

原始代码:

let
Source = Pdf.Tables(Web.Contents("https://ifbb.com/wp-content/uploads/2023/01/07-2023-Jordan-Amat-Results.pdf"), [Implementation="1.3"]),
Page1 = Source{[Id="Page002"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Page1,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}})
in
#"Changed Type"

解决方案代码

以下代码会遍历指定的URL列表,自动提取每个PDF内的所有表格,并合并为一个统一的表:

let
    // 1. 定义要处理的PDF URL列表,可替换为从Excel/CSV导入的URL表
    PDF_URL_List = {
        "https://ifbb.com/wp-content/uploads/2023/01/07-2023-Jordan-Amat-Results.pdf",
        "添加其他PDF URL到这里"
    },
    // 2. 遍历每个URL,提取该PDF的所有表格
    Extract_All_Tables = List.Transform(PDF_URL_List, (url) =>
        let
            Source = Pdf.Tables(Web.Contents(url), [Implementation="1.3"]),
            // 获取PDF内所有表格(不再指定单个Page)
            All_Tables = Table.FromRecords(Source),
            // 提取每个表格的Data列,转换为表的列表
            Table_List = All_Tables[Data],
            // 合并当前PDF内的所有表格
            Combined_PDF_Tables = Table.Combine(Table_List),
            // 添加来源URL列,方便追溯数据来源
            Add_Source_URL = Table.AddColumn(Combined_PDF_Tables, "Source PDF URL", each url)
        in
            Add_Source_URL
    ),
    // 3. 合并所有PDF提取到的表格
    All_Combined_Tables = Table.Combine(Extract_All_Tables),
    // 4. 自动检测并转换列类型(替代手动指定列类型)
    Auto_Change_Type = Table.AutoDetectColumnTypes(All_Combined_Tables, null)
in
    Auto_Change_Type

关键改动说明

  • 动态获取所有表格:用Table.FromRecords(Source)获取PDF内的所有表格记录,再提取Data列得到所有表格的列表,避免固定指定Page002。
  • 多URL遍历:通过List.Transform遍历URL列表,批量处理每个PDF。
  • 自动类型转换:用Table.AutoDetectColumnTypes替代手动指定列类型,适配不同表格的列结构差异。
  • 来源追溯:添加Source PDF URL列,方便后续查看数据来自哪个PDF。

扩展说明

如果你的URL存储在Excel或CSV文件中,可替换PDF_URL_List部分为:

// 从Excel导入URL列表(示例路径,需替换为实际路径)
URL_Source = Excel.Workbook(File.Contents("C:\你的URL列表文件.xlsx"), null, true),
URL_Table = URL_Source{[Item="Sheet1"]}[Data],
PDF_URL_List = URL_Table[URL列名]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:44:50