read.xlsx在R中转换为.csv时修改内容

read.xlsx在R中转换为.csv时修改内容,r,R,我需要将多个.xlsx文件转换为csv文件,但原始.xlsx的内容在转换过程中会被修改 例如,开始的excel文件如下所示 A B C D 1 Foo 2 3 Foo 转换后,.csv文件将包含以下内容 A B C D 1 X1 X2 X3 X4 2 Foo NA NA NA 3 NA NA NA NA 4 Na Na NA Foo 如何在不更改内容的情况下转换.xlsx?我还读到read.xlsx可能与日期有关。有没有

我需要将多个.xlsx文件转换为csv文件,但原始.xlsx的内容在转换过程中会被修改

例如,开始的excel文件如下所示

   A  B  C  D
1 Foo
2
3           Foo

转换后,.csv文件将包含以下内容

   A  B  C  D
1 X1  X2 X3 X4
2 Foo NA NA NA
3 NA  NA NA NA          
4 Na  Na NA Foo
如何在不更改内容的情况下转换.xlsx?我还读到read.xlsx可能与日期有关。有没有简单的方法将.xlsx转换为csv

这是我正在使用的代码

 PathOut<-"C:/Users/Desktop/New folder/"

  require(openxlsx)
  file_list<-list.files(path = PathOut, pattern='\\.xlsx$')

  x=0
  for (file in file_list) {
    setwd("C:/Users/Desktop/New folder/")
    x<-x+1
    file.xl <- read.xlsx(file,skipEmptyRows = FALSE,skipEmptyCols = FALSE,colNames = FALSE,rowNames = FALSE)
    newname<-paste0(tools::file_path_sans_ext(file),'_',LETTERS[x],'.csv')
    write.csv(file.xl, paste(PathOut,newname),row.names = FALSE)
  }

PathOut将
write.csv
的用法替换为
write.table
,以便可以使用
col.names=FALSE
参数。这将停止显示
X1 X2 X3 X4
行。请参阅以获取更多帮助

require(openxlsx)

PathOut <- getwd()

file_list <- list.files(path = PathOut, pattern = '\\.xlsx$')

x <- 0
for (file in file_list) {
    x <- x+1
    file.xl <- read.xlsx(file, skipEmptyRows = FALSE, skipEmptyCols = FALSE, colNames = FALSE, rowNames = FALSE)
    newname <- paste0(tools::file_path_sans_ext(file),'_',LETTERS[x],'.csv')
    write.table(file.xl, paste0(PathOut, "/", newname), row.names = FALSE, col.names = FALSE)
}
require(openxlsx)

非常感谢。这将删除列名。我还添加了na=''以删除NAs,但这并不能解决问题。如果excel单元格的内容已格式化,数据内容仍在修改中,引号将添加到.csv中。我在某个地方读到,由于这个问题,使用R将xlsx文件转换为.csv不是一个好主意。啊,是的,我现在看到了问题。我以前只在RStudio中查看该文件,在那里没有发生此类问题。还有一个
quote=FALSE
参数也可以添加到
write.table
函数中,但我认为这还不能满足您的需要。我会再考虑一下。