openxlsx无法读取R中的.xlsx文件

我正在尝试使用R openxlsx包从.xlsx文件中读取值。 简而言之,我需要编写一行数据,然后填充一些必须在R中读回的输出单元格。我将分享一个示例来更好地解释问题。

.xlsx文件的初始状态:

在这里输入图像说明

我正在尝试向单元格写入新值:A2:A3 = c(“c”,5)。 所以理想情况下,我期待A6 = 15

以下是使用的代码:

 require(openxlsx) path <- "C:/path_to_file/for_SO1.xlsx" input_row <- c("c", 5) # Load workbook; create if not existing wb <- loadWorkbook(path) # createSheet(wb, name = "1") writeData(wb, sheet = "Sheet1", x = data.frame(input_row), startCol=1, startRow=1 ) data_IM <- read.xlsx(wb, sheet = "Sheet1", rows = c(5,6), cols = c(1)) # Save workbook saveWorkbook(wb, file = path, overwrite = TRUE) #> data_IM # output_row #1 3 

但是我得到了最初的价值(3)。 但是,如果我打开.xlsx文件,我可以看到15位于那里:

在这里输入图像说明

什么可能是不能读这个单元格的原因? 在写入文件之后,我尝试保存并重新读取,但是甚至失败了。 openxlsx是我唯一的select,由于从XLConnect的JAVA错误等

 ?read.xlsx 

使用writeFormula写入Workbook对象的公式不会被read.xlsx()拾取。 这是因为只有在Excel中打开文件时才会写入公式并对其进行评估。 用Excel打开,保存和closures文件将解决这个问题。

所以文件需要在Excel中打开,然后保存,我可以validation这是行不通的。 但是这可能不适合你。

XLConnect似乎具有所需的function

 # rjava can run out of memory sometimes, this can help. options(java.parameters = "-Xmx1G") library(XLConnect) file_path = "test.xlsx" input_row <- c("c", 5) wb <- loadWorkbook(file_path, create=F) writeWorksheet(wb, 1, startRow = 1, startCol = 1, data = data.frame(input_row)) setForceFormulaRecalculation(wb, 1, TRUE) saveWorkbook(wb) # checking wb <- loadWorkbook(file_path, create=F) readWorksheet(wb, 1)