如何使用Openxlsx包在R中修改Excel工作簿中的现有工作表?

3 浏览
0 Comments

如何使用Openxlsx包在R中修改Excel工作簿中的现有工作表?

我正在使用\"openxlsx\"包来读取和写入Excel文件。我有一个固定的文件,其中有一个名为\"Data\"的工作表,其他工作表中的公式使用该工作表。我想更新这个\"Data\"工作表,而不触及其他工作表。\n我尝试了以下代码:\n

write.xlsx(x = Rev_4, file = "Revenue.xlsx", sheetName="Data")

\n但是这会擦除Excel文件并创建一个只包含\"Data\"工作表中新数据的新文件,而其他所有内容都被删除。有什么建议吗?

0
0 Comments

在R中使用Openxlsx包修改现有的Excel工作簿中的表单时,可能会遇到以下问题。为了解决这个问题,可以按照以下步骤进行操作:

1. 首先,需要安装并加载Openxlsx包,可以使用以下命令完成:

install.packages("Openxlsx")
library(Openxlsx)

2. 接下来,需要使用xlsx2dfs函数将Excel工作簿中的所有表单导入为数据框列表。这可以通过以下代码实现:

dfs <- xlsx2dfs("Revenue.xlsx")

3. 然后,可以使用替换操作符将更新后的数据框替换掉指定表单中的数据框。例如,可以使用以下代码将名为"Data"的表单中的数据框替换为名为Rev_4的更新后的数据框:

dfs["Data"] <- Rev_4

4. 最后,使用dfs2xlsx函数将修改后的数据框列表重新写入到原始的Excel工作簿中。需要注意的是,这将覆盖现有的文件,因此在执行此操作之前请确保已经备份了原始文件。可以使用以下代码完成此操作:

dfs2xlsx(dfs, "Revenue.xlsx")

通过按照以上步骤操作,就可以使用Openxlsx包在R中修改现有的Excel工作簿中的表单了。需要注意的是,使用xlsx2dfs函数时,它假设所有的表单都包含简单的表格。如果表单中包含其他类型的数据,需要使用其他方法进行处理。以上是解决这个问题的方法。

0
0 Comments

问题原因:使用Openxlsx包在R中修改现有的Excel工作簿时出现问题。尝试加载完整的工作簿,然后修改其数据,再将其保存到磁盘上。使用writeData函数可以指定起始行和列,并且在保存到磁盘之前还可以修改其他部分。然而,这种方法会损坏文件。

解决方法:根据实际情况,将问题分为两种情况进行解决。

1. 如果工作簿已经存在,可以使用以下代码修改工作表:

wb <- loadWorkbook("Revenue.xlsx")
writeData(wb, sheet = "Data", Rev_4, colNames = F)
saveWorkbook(wb,"Revenue.xlsx",overwrite = T)

首先加载工作簿,然后修改数据,最后将其保存到磁盘上。

2. 如果工作簿不存在,可以使用以下代码创建并修改工作表:

wb <- createWorkbook()
addWorksheet(wb, sheetName = "test1")
writeData(wb, sheet = "test1", x = data1)
addWorksheet(wb, sheetName = "test2")
writeData(wb, sheet = "test2", x = data2)
saveWorkbook(wb, "test.xlsx")

首先创建一个新的工作簿,然后添加工作表并修改数据,最后将其保存到磁盘上。

需要注意的是,Openxlsx包在处理包含Excel内容的工作簿时可能会出现问题,如果文件包含的内容超出了Openxlsx的处理范围,可能会导致文件损坏。开发人员似乎在根据用户报告的损坏工作簿来更新包,以解决这个问题。

0