当我使用
openxlsx
保存数据帧时,生成的文件最终被损坏。
library(openxlsx)
# Making dummy dataframe
Name <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age <- c(23, 41, 32, 58, 26)
df <- data.frame(Name, Age)
# Creating output file
output_path <- "check_corruption.xlsx"
wb <- createWorkbook(output_path)
addWorksheet(wb, "Sheet1")
# Write unformatted data
writeData(wb, sheet=1, df)
# Save fully formatted output
saveWorkbook(wb, output_path, overwrite=TRUE)
当我尝试打开 check_corruption.xlsx 时,出现错误
“我们发现‘check_corruption.xlsx’中的某些内容存在问题。请执行以下操作 您希望我们尽力恢复吗?”。
如果我修复文件,那么输出看起来不错,但我不明白是什么导致了问题。
原来这是由于文件的输出路径中存在“&”符号造成的,openxlsx 不支持该符号。我在here提出了一个已解决的问题,因此,如果您遇到此问题,请将 openxlsx 的安装更新到 github 的主分支。
打开在
openxlsx
中创建的工作簿时,我也遇到了同样的错误,但原因不同,并且修复后,第一列中实际上缺少一些数据。
经过大量故障排除后,结果发现我将样式应用于“0”列:
openxlsx::addStyle(wb, sheet=1, style=sty3, rows=1, cols=c(0:34), gridExpand = TRUE, stack = FALSE)
这是一个很大的禁忌。列应始终从 0 以上开始:
cols=c(1:34)
。