我读取文件,更改其内容,然后我想将dataframe
写入新文件。让我烦恼的是,Excel的宽度不能调整(它不保存更改)。
我想知道是否可以编写具有适合最长值的列宽的csv文件。
dat <- read.csv("Input.csv")
# Do some processing
#Write the new file
write.csv(dat, "Output.csv", row.names=FALSE)
编辑1:
dat <- read.csv("Input.csv")
createSheet(wb, "test")
writeWorksheet(wb, dat, "test")
colWidths <- sapply(1:ncol(dat), function(i) max(c(8, nchar(c(names(dat)[i], as.character(dat[, i]))))))
setColumnWidth(wb, "test", 1:ncol(dat), colWidths * 256)
saveWorkbook(wb)
我做错了什么?它写一个空文件。
答案 0 :(得分:1)
你为csv写的宽度并不重要;打开它时,Excel将始终具有其默认列宽。
您的选择是:
setColumnWidth
函数在R中设置列宽。e.g。
dat <- data.frame(x = 1:24, `Long Column Name` = 25:48, `Wide Column` = paste(LETTERS, collapse = " "))
library("XLConnect")
wb <- loadWorkbook("Output.xlsx", create = TRUE)
createSheet(wb, "Output")
writeWorksheet(wb, dat, "Output")
colWidths <- sapply(1:ncol(dat), function(i) max(c(8, nchar(c(names(dat)[i], as.character(dat[, i])))))
setColumnWidth(wb, "Output", 1:ncol(dat), colWidths * 256)
saveWorkbook(wb)
答案 1 :(得分:0)
在R中运行write.csv之前,您可能需要在Excel中关闭.csv,因为Excel会锁定文件。
如果这是您想要的,也可以像this那样填充列。