【发布时间】:2021-10-23 06:54:59
【问题描述】:
我经常使用openxlsx 包,对此我非常满意。我最近购买了一台装有 Windows 10 的新电脑,并继续使用我自己编写的一些程序。但是,在新机器上,我在 Excel 文件本身中创建工作表链接时发现了一个奇怪的行为。考虑以下最小示例:
library(openxlsx)
wbook <- createWorkbook()
addWorksheet(wb = wbook, sheetName = "Index")
addWorksheet(wb = wbook, sheetName = "Data")
writeFormula(wb = wbook, sheet = "Index", startCol = 1, startRow = 1, x =
makeHyperlinkString(sheet = "Data", text = "Click"))
writeData(wb = wbook, sheet = "Data", x = data.frame(X = 1:10, Y = 11:20))
saveWorkbook(wb = wbook, file = "C:/temp/test.xlsx", overwrite = TRUE)
当我打开文件时,我在Index 表中看到以下内容:
单击单元格中的链接会在 Excel 中出现一个错误框,“无法打开指定的文件”。我也在同一台机器上的 Arch Linux 下尝试过,结果是一样的。如果我执行上述代码的以下部分
makeHyperlinkString(sheet = "Data", text = "Click")
控制台中的结果如预期:
[1] "=HYPERLINK(\"#'Data'!A1\", \"Click\")"
由于某种原因,当工作簿写入磁盘时,双引号和单引号会转换为 HTML &quote; 和 &apos; 标签。
单元格中的实际公式应为=HYPERLINK("#'Data'!A1", "Click"),并应在Excel中显示如下:
后者是在我之前的 Windows 10 计算机上生成的。我也在我之前的计算机上的 Arch Linux 下尝试过它,它工作得很好。我在 Windows 10 下的第三台机器上试了一下,没有问题。我尝试过的所有计算机都具有相同的语言设置。以下是在 Windows 和 Linux 下的所有三台计算机上 R 中 Sys.getlocale() 命令的输出:
[1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
这种行为的原因可能是什么?
【问题讨论】: