我想阅读一堆位于同一目录中的excel文件,并将它们存储在合并的Excel文件中的不同表格中。
我正在使用xlsx
和openxlsx
的组合来实现这一目标。原因是,openxlsx
无法读取.xls文件而xlsx
是基于java的,并且在尝试写入大文件时会因内存不足而导致GC overhead limit exceeded
错误。
以下是我正在使用的代码:
library(openxlsx)
library(xlsx)
mnth="january"
outputFileName<-"Consolidated.xlsx"
files <- list.files(path="./Original Files", pattern=mnth, full.names=T, recursive=FALSE)
start_row<-1
lapply(files, function(x){
print(x)
xlFile<-read.xlsx2(x, sheetIndex = 1, startRow = 2, header =T) #Reads all columns as factors
#Write to Excel
write.xlsx(xlFile, file=outputFileName, sheetName = mnth, startRow = start_row)
start_row<- start_row + nrow(xlFile)
})
我正在尝试阅读1月份的所有文件(例如:2016年1月,2016年1月),并将这些行附加到Consolidated xlsx文件的同一张表中。
但是我收到了错误:
Error in write.xlsx(xlFile, file = outputFileName, sheetName = mnth, :
unused argument (startRow = start_row)
文档清楚地提到startRow
是一个可选参数。有趣的是,sheetName
也是一个可选参数,但不会抛出错误。
我已经删除了startRow = start_row
的代码并且它按预期工作,即仅使用最后一个xls文件的内容重复覆盖内容。
更新
我已经从XLConnect
的函数改变了读取函数,以避免使用具有相似名称的几个函数,我仍然得到相同的错误:
Error in write.xlsx(xlFile, file = outputFileName, sheetName = placename, :
unused argument (startRow = start_row)
以下是XLConnect
的代码:
lapply(files, function(x){
print(x)
xlFile<-readWorksheetFromFile(file = x, sheet=1, startRow=2)
str(xlFile)
l=list(dt,xlFile)
#Write to Excel
write.xlsx(xlFile, file=outputFileName, sheetName = mnth, startRow = start_row)
start_row<- start_row + nrow(xlFile)
})