首页 > 解决方案 > 使用 xlsx 包覆盖 xlsm 文件中的单元格引用

问题描述

我有一个 .xlsm 工作簿,其中有一个当前引用单元格 B2 的单元格 B1,其硬编码值为 5。

我想使用 R 从单元格 B1 中删除引用并将其替换为硬编码值 0。

我正在尝试通过使用 xlsx 包在 R 中执行此操作。但是,在使用 setCellValue 函数并打开工作簿后,我看到 B1 的值为 0,但它仍然清楚地引用了单元格 B2(这可以在公式栏中看到以及单元格 B3 的事实,其中是单元格 B1 的函数,保持不变)

您能帮我利用 xlsx 包覆盖 B1 中的单元格引用并将其替换为硬编码值吗?

请参阅下面的代码以及excel工作簿的前后截图。

代码:

    library('xlsx')

    fn <- 'test.xlsm'
    sn <- 'Sheet1'

    wb <- loadWorkbook(fn)
    sheets <- getSheets(wb)
    sheet <- sheets[[sn]]
    rows <- getRows(sheet)
    cells <- getCells(rows)
    setCellValue(cells$`1.2`, 0)
    saveWorkbook(wb, fn)

运行前的 Excel 工作簿:

在此处输入图像描述

运行后的 Excel 工作簿:

在此处输入图像描述

标签: rr-xlsx

解决方案


推荐阅读