使用Power Query处理列数不同的PDF文件并转换为CSV
解决Power Query多PDF表格列数不一,统一为文本+金额两列的方案
操作步骤
1. 批量导入文件夹内PDF
打开Excel,走「数据」→「获取数据」→「从文件」→「从文件夹」,选目标文件夹后点「转换数据」进入Power Query编辑器。
2. 提取所有PDF的表格数据
添加自定义列,输入公式:
=Table.FromRecords(Pdf.Tables([Content])[Data])
点击该列右侧的展开按钮,选择「展开到新行」,将所有PDF的表格数据合并——此时列数混乱、空单元格较多属于正常现象。
3. 清理数据+逆透视统一结构
- 删除空列:右键列名选择「删除」,或者通过「转换」→「删除列」→「删除空列」批量清理。
- 选中所有列,点击「转换」→「逆透视列」→「逆透视其他列」。这一步会把分散在多列的内容转成「属性」和「值」两列,所有文本、金额都会归集到「值」列中。
4. 拆分文本与金额列
- 添加自定义列判断内容是否为金额,公式:
=try Value.Is(Value.FromText([Value]), type number) otherwise false
将该列命名为「是否金额」。
- 筛选「是否金额」为
true,把「值」列重命名为「金额」;再筛选false,把「值」列重命名为「文本」。 - 给两个表都添加「索引」列(「添加列」→「索引列」),然后按索引合并两个表——确保每一行文本对应一行金额。
5. 收尾导出CSV
删除无用列(如「属性」「是否金额」「索引」),检查数据对应无误后,点击「关闭并上载」→ 选择「仅创建连接」,右键连接→「加载到」,选择CSV格式完成导出。
小技巧
如果PDF内是严格的「文本列+金额列」交替排列(如列1文本、列2金额、列3文本...),无需写判断公式,直接给逆透视后的表加索引,用Number.Mod([索引],2)=0标记金额行,操作更高效。
内容的提问来源于stack exchange,提问作者bjr
相关产品推荐
相关产品推荐

