如何用Power Query合并文件夹中最新.htm文件内的多张表格
问题
每日会有一个含随机数量表格的.htm文件存入指定文件夹,为制作报表,我已通过Power Query筛选出最新文件,现在需要合并该文件内的所有表格。文件导入后显示为多个独立表格,数量每日在3-15个不等,当前使用的Power Query代码如下:
let Source = Folder.Files("filepath"), #"Sorted Rows" = Table.Sort(Source,{{"Date created", Order.Descending}}), #"Kept First Rows" = Table.FirstN(#"Sorted Rows",1), #"Filtered Hidden Files1" = Table.SelectRows(#"Kept First Rows", each [Attributes]?[Hidden]? <> true), #"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])), #"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}), #"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}), #"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File"))), #"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"Site", Int64.Type}, {"SName", type text}, {"Status", type text}, {"DRAW", type number}, {"CUR", type text}, {"SAF", Int64.Type}, {"SCUR", type text}, {"Total", type number}}) in #"Changed Type"
文件导入后效果:显示为多个结构一致的独立表格。
解决方案
当前代码的问题在于Transform File自定义函数仅处理了单个表格,要合并所有表格,需修改该函数:
- 打开
Transform File函数,替换原有逻辑为:- 读取HTML文件并提取所有表格
- 过滤有效表格后合并
修改后的Transform File函数代码:
let Source = Web.Page([Content]), // 提取所有表格数据 AllTables = List.Select(Source[Data], each Value.Is(_, type table)), // 合并所有表格 CombinedTables = Table.Combine(AllTables), // 统一列类型(和原代码保持一致) ChangedType = Table.TransformColumnTypes(CombinedTables,{{"Site", Int64.Type}, {"SName", type text}, {"Status", type text}, {"DRAW", type number}, {"CUR", type text}, {"SAF", Int64.Type}, {"SCUR", type text}, {"Total", type number}}) in ChangedType
- 主查询无需修改,保存后即可自动合并最新htm文件内的所有表格。
内容的提问来源于stack exchange,提问作者Sam R.
相关产品推荐
相关产品推荐

