使用 openxlsx 包的工作表链接问题

Issue with links to sheets using the openxlsx package

我经常使用 openxlsx 软件包,对此我感到非常满意。我最近购买了一台 Windows 10 的新电脑,并继续使用我自己编写的一些程序。但是,在新机器上,当在 Excel 文件本身中创建 links 到 sheets 时,我注意到一个奇怪的行为。考虑以下最小示例:

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 sheet 中看到以下内容:

单击单元格中的 link 会在 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"

此行为的原因可能是什么?

已经有一个 issue in version 4.2.4 which has already been reported and a bug fix should be part of the next release and is already part of the development version 4.2.4.9000.

尝试:

remotes::install_github("ycphs/openxlsx")

我刚测试了一下,结果符合预期。