从xlsx工作簿中提取内部超链接

时间:2018-01-08 18:01:56

标签: r

我有一个输入xlsx工作簿,其中包含许多(数千个)内部超链接到许多其他工作表(在同一工作簿中)。在xlsx image:" A2"链接到" linksTab!B3"。 xlsx file本身位于Dropbox上。

我可以使用

访问(基于此similar question
library(XML)

# rename file to .zip
my.zip.file <- sub("xlsx", "zip", my.excel.file)
file.copy(from = my.excel.file, to = my.zip.file)

# unzip the file
unzip(my.zip.file)

# unzipping produces a bunch of files which we can read using the XML package
# sheet1 has our data
xmlfile <- xmlParse("xl/worksheets/sheet1.xml")

但是,在这种情况下,引用的问题输出中的最终xml提取会产生空输出。深入研究XML sheet1,我发现链接在xml文件中表示为

  

&LT;超链接ref =&#34; A2&#34;位置=&#34;!B3 linksTab&#34; tooltip =&#34;转到链接&#34;   显示=&#34;连结&#34; XR:UID =&#34; {94 ...&#39;

如何提取它们?

1 个答案:

答案 0 :(得分:0)

找到我自己的答案: 按上述方式加载xmlfile后,通过

获取链接
# grab the hyperlinks, and dump the XML components by convert them to character vector
 linkReferences <- tibble(
     RefCell  = as.character( xpathApply(xmlfile, "//x:hyperlink/@ref",      namespaces="x")),
     LinkCell = as.character( xpathApply(xmlfile, "//x:hyperlink/@location", namespaces="x"))
 )

 linkReferences  
 # A tibble: 5 x 2
   RefCell    LinkCell
     <chr>       <chr>
 1      A2 linksTab!B3
 2   A3:A5 linksTab!B3
 3      A3 linksTab!D3
 4      A4 linksTab!F3
 5      A5 linksTab!H3