为啥我不能使用 write.xlsx 追加 [重复]

Posted

技术标签:

【中文标题】为啥我不能使用 write.xlsx 追加 [重复]【英文标题】:Why I can not append using write.xlsx [duplicate]为什么我不能使用 write.xlsx 追加 [重复] 【发布时间】:2021-03-30 02:05:16 【问题描述】:

我是 R 的新手!!!!我会感谢更有经验的人的一点帮助!!! :)

我使用 write.xlsx 创建一个 xls 文件。但我需要有不同的床单。我使用的代码,即使我使用 append=T 也不会追加!!!它会覆盖!!我无法理解为什么!!!我的代码有什么问题吗?

我有一个包含 10 个数据框(年)的列表(YearList)。我想将每个数据框(年份)导出到一个 excel 文件中的不同工作表。我在这里搜索过,找到了一些解决方案,但它们对我不起作用而且我不知道为什么!

我已经尝试过这些: 1.

for (i in 1:10)
     write.xlsx(YearList[[i]], file="C:\\Users\\mmm\\Desktop\\R\\years.xlsx", sheetName = 
     paste0("Sheet_",i,".xlsx"), row.names=F, append=T)    
 
for (i in 1:10)   
write.xlsx(YearList[[i]],file="C:\\Users\\mmm\\Desktop\\R\\years.xlsx",
sheetName = years[i],    row.names=F, append=T)     

years[i] 是年份名称的向量)

无论我选择运行什么,唯一发生的事情是文件 years.xlsx 被创建但只有一张,最后一张!而不是追加是覆盖!!!为什么会这样?我能做什么??

非常感谢!!

【问题讨论】:

【参考方案1】:

试试这个:

library(xlsx)
#Workbook
wb = createWorkbook()
#Lapply
lapply(names(Yourlist), function(s) 
  sht = createSheet(wb, s)
  addDataFrame(Yourlist[[s]], sht)
)
saveWorkbook(wb, "Yourfile.xlsx")

如果您的列表中没有名称,您应该在之前运行下一个代码:

#Code
names(Yourlist) <- paste0('df',1:length(Yourlist))

【讨论】:

非常感谢您的回答,但尝试执行此代码时出现 Java 错误,不知道如何修复。

以上是关于为啥我不能使用 write.xlsx 追加 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用write.xlsx将数据框写入R中的excel时如何以粗体打印顶行

使用 openxlsx 在 R 中使用 write.xlsx 创建的 Excel 文件的密码保护

html中body元素已经加载完成为啥还是不能追加节点

为啥我不能在 C# 中使用基本构造函数 [重复]

为啥我不能使用带有开关的非整数类型 [重复]

为啥我不能使用 jquery 访问 ajax 拉取的内容 [重复]