如何使用 Power Query 从 SharePoint 库中的(许多)文档中获取数据
Posted
技术标签:
【中文标题】如何使用 Power Query 从 SharePoint 库中的(许多)文档中获取数据【英文标题】:How to get data from within (many) documents in SharePoint library with Power Query 【发布时间】:2021-02-02 16:24:19 【问题描述】:此处为 Power BI 初级
如何从 SharePoint 列表中查看每个 Excel 文件并从预定义的单元格中提取内容。
我目前正在访问一些包含 .xlsx 文件的 Intranet Sharepoint 库,并且我正在使用这些文件的元数据进行一些报告。例如,一个库包含 10 个 excel 文件,因此我可以绘制出上传者、上传时间以及分配到的 wat 类别的图表...
但是,Power Query 有没有办法查看每个文件,从 Excel 的单元格 A1 中获取值,然后将其添加为新列“CellA1Content”?即,根据文件内容制作您自己的元数据,并将它们添加到导入的元数据表中。
我发现了一些我可能需要的功能:
File.Contents
Excel.CurrentWorkbook
但是,如果可能的话,我对 Power Query 的了解还不够,无法将它们组合在一起。我将不得不进行某种类型的 foreach 操作。
编辑:解决方案
这行得通。我在 excel 中选择了第一个非隐藏工作表,并且我还制作了函数,以便我可以传递列号和行号。
主要查询:
let
Source = SharePoint.Contents("http://mysharepoint", [Implementation=null, ApiVersion=15]),
... ... ...
//Open each excel and get cell D5
#"AddedColumn1" = Table.AddColumn(#"Filtered Rows", "AddedColumn1", each GetCellContent([Content],4,5))
in
AddedColumn1
Power BI 中的空白查询,称为 GetCellContent:
let
Source = (binaryParameter,col,row) => let
Source = Excel.Workbook(binaryParameter, null, false),
UnhiddenSheets = Table.SelectRows(Source, each if [Hidden]=false and [Kind]="Sheet" then true else false),
Sheet = UnhiddenSheets0[Data],
Column = Table.SelectColumns(Sheet,Text.Combine("Column",Number.ToText(col))),
Cell = Record.Field(Columnrow-1, Text.Combine("Column",Number.ToText(col)) )
in
Cell
in
Source
【问题讨论】:
【参考方案1】:You'll need a Function used in a column like this.
这是我对您的问题的本地解释,没有共享点。但是共享相同的逻辑。
主查询
let
Source = Folder.Contents("YourDirectory"),
#"Filtered Rows" = Table.SelectRows(Source, each ([Extension] = ".xlsx")),
#"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows","Content", "Name"),
#"Added Custom" = Table.AddColumn(#"Removed Other Columns", "Row1Col1", each PullRow1Col1([Content]))
in
#"Added Custom"
PullRow1Col1:
let
Source = (binaryParameter) => let
Source = Excel.Workbook(binaryParameter, null, false),
Sheet1_sheet = Source[Item="Sheet1",Kind="Sheet"][Data],
Column1 = Sheet1_sheet0[Column1]
in
Column1
in
Source
【讨论】:
这行得通,谢谢。我还参数化了行和列以获得额外的灵活性。尽管对于我作为新手来说,这是一种痛苦的行为,因为显然标识符不能是连接的字符串。所以Cell = Sheet0["Column" & Number.ToText(col)]
没用。耻辱。 Power Query 对我来说是一种令人困惑的编程语言。以上是关于如何使用 Power Query 从 SharePoint 库中的(许多)文档中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Power Query 的 Web.Contents 发布多部分/表单数据