- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Excel 工作表,其中某些列包含超链接,这些超链接表示为与超链接指向的实际地址完全不同的文本。我想使用一些 R 代码来修改和子集 Excel 工作表,但保留超链接。我想我可以通过将这些超链接提取为索引字符向量然后使用 makeHyperlinkString()
将它们重新引入新的 Excel 文档来做到这一点。和 writeFormula()
功能。但我无法弄清楚如何获取链接本身的向量。
万一这很重要,我的意图是对 Excel 工作表的 data.frame 版本而不是工作簿对象进行所有修改和子集化。
最佳答案
哦,现在我想我有你的问题。我以为只有普通的超链接而不是 Excel 超链接。
我认为这可能会帮助您获得超链接的矢量,尽管它有点困惑。
library(openxlsx)
pathtofile = "path to .xlsx file"
df1 <- read.xlsx(xlsxFile = pathtofile,
sheet = 1, skipEmptyRows = FALSE,
colNames = F, rowNames = F,
startRow = 1)
## Sheet or Tabelle
Sheet = "Sheet" ## Or "Tabelle"
## Get Names of rows from Hyperlink column
rowIndex <- sub(x = df1[,1], pattern = paste0("(#'",Sheet,"\\d'!)"), replacement = "")
## Get the Sheet, where Hyperlinks are saved
SheetName <- regmatches(df1[,1], regexpr(text = df1[,1], pattern = paste0("(",Sheet,"\\d)")))
## Extract only the Sheet number
SheetIndex <- as.numeric(sub(x = SheetName, pattern = Sheet, replacement = ""))
## Get the row Indexes as numeric
RowIndexNum <- as.numeric(regmatches(rowIndex, regexpr(text = rowIndex, pattern = "\\d")))
## Get the column name as character
RowIndexName <- sub(x = rowIndex, pattern = "\\d", "")
## Create uppercase Letters
myLetters <- toupper(letters[1:26])
## Convert Row Name (character) to numeric (based on alphabetical order)
RowIndexNameNum <- match(RowIndexName, myLetters)
## If Hyperlinks only in 1 Sheet or several sheets
if (length(unique(SheetIndex)) == 1) {
dfLinks <- read.xlsx(xlsxFile = pathtofile,
sheet = unique(SheetIndex),
skipEmptyRows = FALSE,
colNames = F, rowNames = F,
rows = RowIndexNum[1]:tail(RowIndexNum,1),
cols = unique(RowIndexNameNum),
startRow = 1
);
} else {
dfLinks <- data.frame()
for (i in unique(SheetIndex)){
dfTmp <- read.xlsx(xlsxFile = pathtofile,
sheet = i,
skipEmptyRows = FALSE,
colNames = F, rowNames = F,
rows = RowIndexNum[1]:tail(RowIndexNum,1),
cols = unique(RowIndexNameNum),
startRow = 1)
dfLinks <- rbind(dfLinks, dfTmp)
}
}
dfLinks
这是我的 Excel 文件的样子:
关于r - 使用 R-package 'openxlsx' 从 Excel 表中提取链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533428/
将表格写入 Excel 工作簿时: wb <- createWorkbook() addWorksheet(wb, "Data") data <- tibble(x = seq(1,10), y =
我正在尝试将数据从 R 写入现有的 Excel 文件,同时保留格式。我能够按照这个问题的答案 ( Write from R into template in excel while preservin
我正在使用 Excel 模板从不同的人那里收集数据。为了最大限度地减少人们更改模板结构的机会,我想保护工作表,但仍然允许他们填写我想要的数据值。 我很高兴找到了 openxlsx 软件包的 fork
关于 R 中 openxlsx 库的一个问题: 我正在寻找一种在 openxlsx 中向单元格值添加换行符的方法,以便该值在 Excel 中位于两行(或更多行)中。我的意思是通过键入一个值,按 Alt
我正在使用包 openxlsx 将 .xlsx 文件打开到 R 中。这是我尝试读取的数据的一个基本示例: 这是我用来读取 excel 的代码: read.xlsx("F:/Test.xlsx",col
我试图用 openxlsx 在 Excel 工作簿中填充一行基于该行的列中的文本。例如,如果单元格 C3包含 A然后突出显示第 3 行。 理想情况下,这不会是 conditionalFormattin
我正在使用 openxlsx 包,并在工作簿对象中克隆工作表。然后,我将新数据添加到这个克隆的工作表中。 如何将与此工作表上当前存在的相同样式应用于此添加的数据? 例如假设旧工作表由第 1:3 列中的
我正在尝试添加多个验证并将公式添加到 Excel 文件。这是我使用的代码: library(openxlsx) fileTemplate <- 'New01.xlsx' wbTemplate <- l
我正在尝试从 R 导出到 excel 一个包含两列的数据框,我想用 excel if 公式填充该数据框,以便用户稍后可以更改阈值。我的问题是如何将类似以下 IF(C2>4; "YES";"NO") 的
我使用 openxlsx包很多,我很满意。我最近购买了一台装有 Windows 10 的新电脑,并继续使用我自己编写的一些程序。但是,在新机器上,我在 Excel 文件本身中创建工作表链接时发现了一个
我正在使用 openxlsx在 r 中创建具有某些格式参数的 excel 文件。以下是可重用的代码: library(openxlsx) wb <- createWorkbook() addWorks
我想用 openxlsx 更改工作簿表中的单个单元格并将其写回相同的 .xlsx 而不丢失原始 .xlsx 文件的样式、验证等。我规定openxlsx是因为它没有 rJava 依赖性。 这是一个虚拟的
一张excel表格可以写多张表格吗?根据我的尝试,我看到只有最后一个对象被写入文件。可能是我每次都覆盖文件。所以我想知道如何修改代码以在同一张表中编写两个表?谢谢 data.sets <- ls("p
我正在尝试使用 openxlsx 读取包含时间序列数据的大型 excel 文件。我发现如果数值向量参数超过一定数量的元素,convertToDateTime 会开始省略时间。我的代码如下所示: ts
导出 p.values 非常小的表格数据时,我们注意到在获取的 Excel 文件中,某些行被错误地替换为 0.0000000000,而不是 -200 ... _300 中的非常小的 10 次方 以下链
我正在使用 openxlsx 包来读取和写入 Excel 文件。 我注意到,当我使用以下命令将表格导出到 Excel 时write.xlsx(MyData, 文件=“MyFile.xlsx”)在 Ex
createStyle openxlsx 中的函数包有一个参数 numFmt ,它允许您创建一个 excel 格式以应用于 .xlsx 文件中的特定单元格。您可以通过指定 numFmt = '0' 来
我正在尝试对工作簿脚本进行编码以匹配一种格式,该格式会自动将任何 0 值更改为破折号,其方式与在 Excel 中单击“,”的方式大致相同。我尝试使用 numFmt = 'COMMA' 但是无法生成破折
目前我正在使用 openxlsx 包读取一个大型 excel 文件(约 70Mb 和 400,000 列)。我尝试过其他软件包(XLConnect、xlsx、readxl),但它们要么给我错误,要么让
openxlsx::write.xlsx功能是覆盖电子表格而不是添加另一个选项卡。 我尝试遵循 Stackoverflow 的一些方向,但没有成功。 dt.escrita % filter(cyl =
我是一名优秀的程序员,十分优秀!