我需要引用 SharePoint 网站中存储的 Excel 文件之间的数据;数据位于不同的文件和不同的文件夹中,但位于同一站点中。
示例:我需要
https://contoso.sharepoint.com/sites/sitename/Shared Documents/General/my_folder/[file1.xlsx]my_sheet!$A$1
读取的值
https://contoso.sharepoint.com/sites/sitename/Shared Documents/General/my_other_folder/[file2.xlsx]my_other_sheet!$C$4
连接需要使用相对路径;我想对不同的项目/站点重用相同的结构和查询,例如:
https://contoso.sharepoint.com/sites/sitename_2/Shared Documents/General/my_folder/file1.xlsx
https://contoso.sharepoint.com/sites/sitename_2/Shared Documents/General/my_other_folder/file2.xlsx
就像这个示例一样,我可以使用本地文件完成所有过程。
我遇到了在线 url 路径的问题!
我已经设法从根路径找到其他文件的路径。
A1 = cell('filename')
# A1 = "https://contoso.sharepoint.com/sites/sitename/Shared Documents/General/my_folder/[file1.xlsx]my_sheet"
A2 = LEFT(A1,FIND("[",A1)-1)
# A2 = "https://contoso.sharepoint.com/sites/sitename/Shared Documents/General/my_folder/"
A3 = TEXTJOIN("/", DROP(TEXTSPLIT("/", TRUE, A2),,1))
# A3 = "https://contoso.sharepoint.com/sites/sitename/Shared Documents/General/"
A4 = A3 & "my_other_folder/file2.xlsx"
我已将
A4
单元格命名为“ABS_PATH”。
在我使用的 PowerQuery 高级编辑器中
let
FilePath = Excel.CurrentWorkbook(){[Name="ABS_PATH"]}[Content]{0}[Column1],
TabName = Excel.CurrentWorkbook(){[Name="TAB_NAME"]}[Content]{0}[Column1],
Source = Excel.Workbook(File.Contents(FilePath), null, true),
Sheet_fromMec = Source{[Item=TabName,Kind="Sheet"]}[Data]
in
Sheet_fromMec
但结果是这样的:
https:////contoso.sharepoint.com//sites//sitename//Shared Documents//General//my_other_folder//file2.xlsx
在返回 a 的字符串中使用保存的文本中的双“/”:
DataFormat.Error:提供的文件路径必须是有效的绝对路径。
有人知道如何处理路径吗?
我正在使用从 Excel 加载的配置表。进入 powerQuery 后,以下函数将调用该表并获取要查找的文件的参数:
(_table as table, FileId as text, Col as text) =>
let
Source = _table,
Row = Table.SelectRows(Source, each ([File Id] = FileId)),
Value=
if Table.IsEmpty(Row)=true then null
else Record.Field(Row{0}, Col)
in
Value
要检索文件(以 csv 为例,但您可以调整以获取 Excel 工作表):
let
FileSite = GetFile(#"Sharepoint sources", "Sigma Structure", "Sharepoint site"),
FileFolder = GetFile(#"Sharepoint sources", "Sigma Structure", "Folder"),
FileName = GetFile(#"Sharepoint sources", "Sigma Structure", "Filename"),
Source = SharePoint.Files(FileSite, [ApiVersion = 15]),
#"Filtered rows" = Table.SelectRows(Source, each Text.Contains([Folder Path], FileFolder)),
#"Filtered Rows2" = Table.SelectRows(#"Filtered rows", each ([Name] = FileName)),
OpenFile = #"Filtered Rows2"{[Name=#"Filtered Rows2"[Name]{0},#"Folder Path"=#"Filtered Rows2"[Folder Path]{0}]}[Content],
#"Imported CSV" = Csv.Document(OpenFile,[Delimiter=";", Encoding=1252, QuoteStyle=QuoteStyle.None])
in
#"Imported CSV"