read.xlsx在R中转换为.csv时修改内容
我需要将多个.xlsx文件转换为csv文件,但原始.xlsx的内容在转换过程中会被修改 例如,开始的excel文件如下所示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可能与日期有关。有没有
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
函数中,但我认为这还不能满足您的需要。我会再考虑一下。