Power Query无法读取.xls文件

3
我正在使用Office 2010。我有一个查询,它从几个Excel文件中组合数据。".xlsx"文件可以正常加载,但是当文件夹中存在".xls"文件时,查询将无法运行(会出现错误消息:"无法从数据库检索数据"。在查询编辑器中,当我点击具有错误的文件行时,我看到此处的消息:错误消息)。将文件重新保存为".xlsx"可行,但我更愿意使用它们原样。

我已在此处安装了MS Access数据库引擎:http://www.microsoft.com/en-us/download/details.aspx?id=13255,但它似乎没有帮助。

还有其他想法吗?谢谢!编辑:添加了两个查询。第一个是应用于每个文件的查询,第二个是组合它们的查询。

查询“Transform Sample File from Supplier CMRTs”:

let
    Source = Excel.Workbook(#"Sample File Parameter1", null, true),
    #"Smelter List_Sheet" = Source{[Item="Smelter List",Kind="Sheet"]}[Data],
    #"Removed Top Rows" = Table.Skip(#"Smelter List_Sheet",3),
    #"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
    #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers",{"Smelter Identification Number Input Column", "Metal (*)", "Smelter Look-up (*)", "Comments"}),
    #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each [#"Metal (*)"] <> null and [#"Metal (*)"] <> "")
in
    #"Filtered Rows"

查询"供应商CMRT":

let
    Source = Folder.Files("O:\Supplier CMRTs"),
    #"Invoke Custom Function1" = Table.AddColumn(Source, "Transform File from Supplier CMRTs", each #"Transform File from Supplier CMRTs"([Content])),
    #"Filtered Rows" = Table.SelectRows(#"Invoke Custom Function1", each [Extension] <> ".txt"),
    #"Renamed Columns1" = Table.RenameColumns(#"Filtered Rows", {"Name", "Source.Name"}),
    #"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File from Supplier CMRTs"}),
    #"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File from Supplier CMRTs", Table.ColumnNames(#"Transform File from Supplier CMRTs"(#"Sample File")))
in
    #"Expanded Table Column1"

你的查询是什么样子?你可以通过进入高级编辑器来查看。 - Alejandro Lopez-Lago - MSFT
@AlejandroLopez-Lago-MSFT已添加到我的帖子中。 - mjones
如果您创建一个新查询并使用指向 .xls 文件的路径调用 Excel.Workbook,那么在 Item 和 Kind 列中会显示哪些值(在该步骤中,而不是后续导航步骤)?您看到的错误是当 Power Query 找不到具有指定单元格值的行时发生的。在这种情况下,它找不到具有 Kind=Sheet 和 Item=Smelter List 的行。 - Alejandro Lopez-Lago - MSFT
1个回答

1
我发现,当我合并二进制文件时,如果我选择示例二进制参数而不是工作表,然后从那里开始操作,它就不会在xls和xlsx文件之间出现问题。但在我能够合并文件夹中的二进制文件之前,我必须先筛选出仅为xlsx文件。因此,在成功合并二进制文件之后,我必须返回应用步骤并删除仅对xlsx文件进行筛选的步骤。

以下是一些带有屏幕截图的逐步说明:

我从一个名为New Folder的文件夹中的4个Excel工作表开始:

enter image description here

这是他们的数据长这样:

enter image description here enter image description here enter image description here enter image description here

从文件夹建立一个新的数据源。不要点击“合并和编辑”按钮。 点击“编辑”按钮:

enter image description here

扩展名列过滤,只显示xlsx文件:

enter image description here

右键单击“内容”列的列名,然后单击“删除其他列”,这样您就只会有一个“内容”列:

enter image description here

点击在此输入图片描述以合并二进制文件。然后点击“文件夹级示例二进制参数”,并单击“确定”:

enter image description here

前往您的应用步骤并删除筛选行步骤,其中您仅筛选了xlsx文件:更改...

输入图像描述 为... 输入图像描述

还要从应用步骤中删除更改类型步骤,因为它现在无法工作且不需要。

现在您的查询应该能够与您的xlsx和xls文件一起使用。

为了完整起见,在此步骤中我有以下内容(我的4个文件中每个文件都只有一个名为Sheet1的工作表,这就是为什么您会看到4个Sheet1名称):

enter image description here

无论如何,对我来说名称并不重要,因此我删除了名称列并扩展了数据列,得到:

enter image description here

你应该将这些数据识别为上述所有4个表格中的数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接