我正在使用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"
答案 0 :(得分:0)
我发现当我组合二进制文件时,如果我选择示例二进制参数而不是 Sheet ,并从那里开始工作,那么它就不会对xls有所了解vs xlsx文件。但在我甚至可以将文件夹的二进制文件组合起来之前,我只能过滤到xlsx文件。因此,在我成功组合二进制文件后,我必须返回应用步骤并删除我仅过滤到xlsx文件的那个。
以下是屏幕剪辑的一步一步:
我开始在一个文件夹中使用4个Excel表格,称为新文件夹:
以下是他们的数据:
从文件夹建立新来源。 不要点击Combine&amp;编辑。 单击编辑按钮:
将扩展列仅过滤为xlsx文件:
右键单击内容列的列名,然后单击删除其他列,这样您就只有内容专栏:
单击以合并二进制文件。然后单击文件夹级别Sample Binary Parameter 并单击OK:
转到已应用步骤并删除已过滤的行步骤,您只需过滤到xlsx文件:更改...
同时从应用步骤中删除已更改类型步骤,因为它现在无法正常工作,并且不需要。
现在,您的查询应与 xlsx 和 xls文件一起使用。
为了完整性,这里是我在这一步中所拥有的(我的所有4个文件都只有一张,每张都有一张名为 Sheet1 ,这就是为什么你看到4 Sheet1 名称):
无论如何,这些名字对我来说并不重要,所以我删除 Name 列并展开 Data 列以获取:
您应该将数据识别为上述所有4张数据。