希望你度过美好的一天。最近,我试图在Excel中创建一个报告,并试图从HTML文件中获取所需的数据。HTML文件基本上是一个网页,所有的问题都存储在这里,然后用我们一天所需的小表格进行过滤。我没有直接从网上获取数据的选择,因为公司不允许外接程序登录网站并从那里获取数据,而且从网上获得数据也不起作用,因为数据库的安全性弹出,不允许你获取任何信息,因此,解决方法是每次我需要制作报告时将页面保存为HTML,并覆盖连接到Excel工作簿的旧页面。
我设法将加载的表格从HTML文件创建到excel中,但我偶然发现了Power Query方面的一个问题。我保存HTML文件的页面中的表不相同,这意味着有时一列会丢失,因为它没有问题,数据库会自动从表中隐藏它,所以当我刷新查询时,它会显示错误";"表中缺少列X";。我知道它丢失了,但我不想每次丢失一列就获取数据,然后再次重做所有内容,这样图表就会正确更新。
有没有一种方法可以在Power Query高级编辑器中生成代码,这样即使缺少一列,表也会更新,而不需要每次都编码/获取数据?我在这里试图做的是自动化一个过程,这样获取数据的工作量最少,对我来说就越好
提前感谢!
*编辑:这是查询的源M代码:
let
Source = Web.Page(File.Contents("D:AUTO.html")),
Data1 = Source{1}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data1,{{"Customer Impact", type text}, {"Yes", Int64.Type}, {"No", Int64.Type}, {"WIP", Int64.Type}, {"T:", Int64.Type}})
in
#"Changed Type"
问题出在#"Changed Type"
步骤上,因为它试图转换不存在的列。
最简单的解决方案是完全消除这一步骤,让数据在不分配类型的情况下通过。也就是说,将您的查询替换为:
let
Source = Web.Page(File.Contents("D:AUTO.html")),
Data1 = Source{1}[Data]
in
Data1
如果类型很重要,您可以编写一个更动态的步骤来分配不会中断的类型。在这种情况下,您需要提供该逻辑应该如何工作的详细信息(例如,"客户影响"始终存在,并且应该是文本,其余部分都应该是整数(。