我在一个目录中有一个文件列表,我正在尝试将其转换为 csv,已按照建议尝试了 rio 包和解决方案here
输出是没有内容的空 CSV 文件列表。这可能是因为 xls 文件的前 8 行有一个图像和几行空行,其中有几个单元格填充了文本。
有什么办法可以在转换之前跳过所有 xls 文件中的前 8 行。
尝试探索 openxlsx 或 readxls 包中的选项,任何建议或指导都会有所帮助。
请不要标记为重复,因为我遇到的问题与已经回答的问题不同
也许以下会起作用。至少它适用于我自己的 excel 文件模型,顶部有一张图片
library("readxl") # To read xlsx
library("readr") # Fast csv write
indata <- read_excel("~/cowexcel.xlsx", skip=8)
write_csv(indata, path="cow.csv")
如果你正在为多个文件运行它,那么将它组合成一个函数。请注意,下面的函数不检查并可能覆盖现有的 csv 文件
convert_excel_to_csv <- function(name) {
indata <- read_excel(name, skip=8)
write_csv(indata, path=paste0(tools::file_path_sans_ext(name), ".csv"))
}
虽然我无法使用 rio 进行转换,但我将其读取为 xls 并使用以下代码将其写回为 csv。测试工作正常,希望它在实施中没有故障。
files <- list.files(pattern = '*.xls')
y=NULL
for(i in files ) {
x <- read.xlsx(i, sheetIndex = 1, header=TRUE, startRow=9)
y= rbind(y,x)
}
dt <- Sys.Date()
fn<- paste("path/",dt,".csv",sep="")
write.csv(y,fn,row.names = FALSE)