Power Query不会从.xls文件中读取

时间:2017-10-31 18:42:05

标签: powerquery

我正在使用Office 2010.我有一个查询,它将来自文件夹中多个excel文件的数据组合在一起。 “.xlsx”文件加载正常,但是当文件夹中存在“.xls”文件时,查询将不会运行(提供错误消息:“无法从数据库中检索数据”。在查询编辑器中,当我单击时有错误的文件的行,我在这里看到消息:Error Message)。将文件重新保存为“.xlsx”有效,但我宁愿能够按原样使用它们。

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

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

查询“从供应商CMRT转换样本文件”:

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"

1 个答案:

答案 0 :(得分:0)

我发现当我组合二进制文件时,如果我选择示例二进制参数而不是 Sheet ,并从那里开始工作,那么它就不会对xls有所了解vs xlsx文件。但在我甚至可以将文件夹的二进制文件组合起来之前,我只能过滤到xlsx文件。因此,在我成功组合二进制文件后,我必须返回应用步骤并删除我仅过滤到xlsx文件的那个。

以下是屏幕剪辑的一步一步:

我开始在一个文件夹中使用4个Excel表格,称为新文件夹

enter image description here

以下是他们的数据:

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

从文件夹建立新来源。 不要点击Combine&amp;编辑。 单击编辑按钮:

enter image description here

扩展列仅过滤为xlsx文件:

enter image description here

右键单击内容列的列名,然后单击删除其他列,这样您就只有内容专栏:

enter image description here

单击enter image description here以合并二进制文件。然后单击文件夹级别Sample Binary Parameter 并单击OK:

enter image description here

转到已应用步骤并删除已过滤的行步骤,您只需过滤到xlsx文件:更改...

enter image description here来...... enter image description here

同时从应用步骤中删除已更改类型步骤,因为它现在无法正常工作,并且不需要。

现在,您的查询应与 xlsx xls文件一起使用。

为了完整性,这里是我在这一步中所拥有的(我的所有4个文件都只有一张,每张都有一张名为 Sheet1 ,这就是为什么你看到4 Sheet1 名称):

enter image description here

无论如何,这些名字对我来说并不重要,所以我删除 Name 列并展开 Data 列以获取:

enter image description here

您应该将数据识别为上述所有4张数据。