【发布时间】:2023-03-17 03:17:01
【问题描述】:
我正在使用 Office 365,我正在尝试从 Web 获取数据表并将其与图像一起导入 Excel 工作表。这是我要导入的表:
https://royaleapi.com/clan/90R9VPP9/war/analytics
http://i63.tinypic.com/2s655kx.jpg
从表格中可以看出,单元格中有代表某些状态的图像,其中包含有意义的数据:
- 奖牌 = 胜利
- 交叉=损失
- 空的奖牌槽 = 行动中丢失
- 空单元格 = 未参与
我单击数据并选择从 Web 粘贴链接。 Excel 会显示以下内容,我在其中选择表 0 作为我需要的信息。
http://i67.tinypic.com/2lmb4u0.jpg
点击加载后,生成的表格如下。如您所见,没有表示此人状态的图像,此方法仅获取文本等,但未拉取应包含图像的单元格。
http://i67.tinypic.com/n3kzz5.jpg
在线搜索后,我设法整理了一个代码来隔离另一个查询 (Query1) 中的图像,您可以在下面找到该查询。这个查询提供了图像,但没有将它们放在单元格中,我只是设法自己获取图像:)
let
Source = Table.FromColumns({Lines.FromBinary(Web.Contents("https://royaleapi.com/clan/8P2V9VYL/war/analytics"), null, null, 65001)}),
#"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([Column1], "src=""/static/img/ui")),
#"Split Column by Delimiter" = Table.SplitColumn(#"Filtered Rows", "Column1", Splitter.SplitTextByEachDelimiter({"src=""/"}, QuoteStyle.None, true), {"Column1.1", "Column1.2"}),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}}),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type", "Column1.2", Splitter.SplitTextByEachDelimiter({""""}, QuoteStyle.None, false), {"Column1.2.1", "Column1.2.2"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Column1.2.1", type text}, {"Column1.2.2", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Column1.1", "Column1.2.2"}),
#"Added Custom" = Table.AddColumn(#"Removed Columns", "https", each "https://royaleapi.com/"),
#"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"https", "Column1.2.1"}),
#"Merged Columns" = Table.CombineColumns(#"Reordered Columns",{"https", "Column1.2.1"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Merged"),
#"Renamed Columns" = Table.RenameColumns(#"Merged Columns",{{"Merged", "Images"}}),
#"Duplicated Column" = Table.DuplicateColumn(#"Renamed Columns", "Images", "Images - Copy"),
#"Renamed Columns1" = Table.RenameColumns(#"Duplicated Column",{{"Images - Copy", "ImageURLs"}})
in
#"Renamed Columns1"
那么,每当我刷新表格时,有什么方法可以简单地在正确的单元格中获取正确的图像?不幸的是,我的编码知识非常有限,因此我愿意接受您的建议和帮助:)
提前致谢! 安迪克
【问题讨论】:
-
您可以添加更多代码吗?
-
CSV不够用吗?
-
@Kubi 实际上,这是我通过在线研究整理的唯一代码,这只给了我单独的图像。 Excel 会自动为没有图像的表格创建以下代码:
let Source = Web.Page(Web.Contents("https://royaleapi.com/clan/8P2V9VYL/war/analytics")), Data = Source{0}[Data] in #"Data" -
@QHarr csv 文件如果不需要每次我想简单地刷新数据时都需要下载,它可能会起作用。对于您的第二条评论,我相信这是我所需要的,因为我理解了这个概念但无法对其进行编码:/
标签: excel vba image web-scraping powerquery