SharePoint Excel 文件中文件源的相对链接

问题描述 投票:0回答:1

我需要引用 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 sharepoint powerquery
1个回答
0
投票

我正在使用从 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"
© www.soinside.com 2019 - 2024. All rights reserved.