【问题标题】:Issue with links to sheets using the openxlsx package使用 openxlsx 包的工作表链接问题
【发布时间】: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 &amp;quote;&amp;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"

这种行为的原因可能是什么?

【问题讨论】:

    标签: r excel openxlsx


    【解决方案1】:

    在 4.2.4 版本中有一个 issue 已被报告,bug fix 应该是下一个版本的一部分,并且已经是 development version 4.2.4.9000 的一部分。

    试试:

    remotes::install_github("ycphs/openxlsx")
    

    我刚刚测试了一下,结果看起来和预期的一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2016-03-14
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      相关资源
      最近更新 更多