将 XLS 转换为 CSV - R(试用 Rio 包)

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

我在一个目录中有一个文件列表,我正在尝试将其转换为 csv,已按照建议尝试了 rio 包和解决方案here

输出是没有内容的空 CSV 文件列表。这可能是因为 xls 文件的前 8 行有一个图像和几行空行,其中有几个单元格填充了文本。

有什么办法可以在转换之前跳过所有 xls 文件中的前 8 行。

尝试探索 openxlsx 或 readxls 包中的选项,任何建议或指导都会有所帮助。

请不要标记为重复,因为我遇到的问题与已经回答的问题不同

r csv xls r-rio
2个回答
4
投票

也许以下会起作用。至少它适用于我自己的 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"))
}

0
投票

虽然我无法使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.