R语言write.xlsx函数是否已更新?当前应当如何正确使用?
openxlsx包
write.xlsx函数版本变更说明与正确用法 你遇到的问题是openxlsx包从4.x版本升级到v5.x版本后的接口不兼容导致的,v5版本对该函数的参数逻辑做了破坏性调整,和旧版本写法不通用。
问题原因
- v5版本新增了
overwrite参数,默认值为FALSE,所以不会自动覆盖已存在的旧文件,需要显式指定参数开启覆盖权限。 - 旧版本的
row.names参数在v5版本中改为驼峰命名rowNames,旧参数名已被废弃,未匹配到合法行名参数时会出现写入内容异常。 - 多个参数的位置顺序在v5版本中做了调整,旧写法只按位置传参会出现参数匹配错误,导致函数无法识别输入的完整表格结构,最终只写入单个空单元格。
正确使用方法
如果要保留和旧版本一致的写入逻辑(带行名、不生成Excel结构化表格、自动覆盖旧文件),使用显式指定所有参数名的写法即可:
write.xlsx( x = tablename, file = "file.xlsx", asTable = FALSE, rowNames = TRUE, overwrite = TRUE )
如果要兼容原有旧代码,也可以将openxlsx包降级到4.x最终稳定版:
remotes::install_version("openxlsx", version = "4.2.5.2")
内容的提问来源于stack exchange,提问作者M1245689
相关产品推荐
相关产品推荐

