openxlsx writeData() 和 saveWorkbook() 创建损坏的 Excel 文件

问题描述 投票:0回答:2

当我使用

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’中的某些内容存在问题。请执行以下操作 您希望我们尽力恢复吗?”。

如果我修复文件,那么输出看起来不错,但我不明白是什么导致了问题。

excel corruption openxlsx
2个回答
1
投票

原来这是由于文件的输出路径中存在“&”符号造成的,openxlsx 不支持该符号。我在here提出了一个已解决的问题,因此,如果您遇到此问题,请将 openxlsx 的安装更新到 github 的主分支。


0
投票

打开在

openxlsx
中创建的工作簿时,我也遇到了同样的错误,但原因不同,并且修复后,第一列中实际上缺少一些数据。

经过大量故障排除后,结果发现我将样式应用于“0”列:

openxlsx::addStyle(wb, sheet=1, style=sty3, rows=1, cols=c(0:34), gridExpand = TRUE, stack = FALSE)

这是一个很大的禁忌。列应始终从 0 以上开始:

cols=c(1:34)

© www.soinside.com 2019 - 2024. All rights reserved.