[R] Re ading multiple Excel 2007 files with a loop
Mark W. Miller
mark_wayne_miller at yahoo.com
Wed Nov 18 21:09:48 CET 2009
I have several hundred Excel 2007 data files in a folder. I would like to
read every file in a single given folder using a loop.
I have searched the FAQ, the forum archives here, other or older R boards
and the R Import / Export documentation, and have asked some very
knowledgeable R users without learning of a solution. I hope someone here
can help.
I understand that the most common suggestion is to convert the files to csv
format. However, there are so many files in my case (ultimately > 1000) I
would rather avoid doing that.
I have also found many solutions to this problem for txt files and files in
additional formats other than Excel 2007.
I can read three Excel 2007 files one at a time with the following example
code using R 2.10.0 on a computer running Windows (XP, I think):
library(RODBC)
channel <- odbcDriverConnect("DRIVER=Microsoft Excel Driver (*.xls, *.xlsx,
*.xlsm, *.xlsb);
DBQ=U:\\test folder\\testA.xlsx; ReadOnly=False")
sqlTables(channel)
my.data.A <- sqlFetch(channel, "Sheet1")
odbcClose(channel)
channel <- odbcDriverConnect("DRIVER=Microsoft Excel Driver (*.xls, *.xlsx,
*.xlsm, *.xlsb);
DBQ=U:\\test folder\\testB.xlsx; ReadOnly=False")
sqlTables(channel)
my.data.B <- sqlFetch(channel, "Sheet1")
odbcClose(channel)
channel <- odbcDriverConnect("DRIVER=Microsoft Excel Driver (*.xls, *.xlsx,
*.xlsm, *.xlsb);
DBQ=U:\\test folder\\testC.xlsx; ReadOnly=False")
sqlTables(channel)
my.data.C <- sqlFetch(channel, "Sheet1")
odbcClose(channel)
# However, when I attempt to read the same three files with the loop below I
receive an error:
library(RODBC)
setwd("U:/test folder")
fname <- list.files(pattern=".\\.xlsx", full.names = FALSE, recursive =
TRUE, ignore.case = TRUE)
z <- length(fname)
print(z)
for (sp in 1:z) {
channel <- odbcDriverConnect("DRIVER=Microsoft Excel Driver (*.xls, *.xlsx,
*.xlsm, *.xlsb);
DBQ=U:\\test folder\\fname[sp]; ReadOnly=False")
sqlTables(channel)
my.data <- sqlFetch(channel, "Sheet1")
print(my.data)
odbcClose(channel)
}
# The error I receive states:
Error in odbcTableExists(channel, sqtable) :
‘Sheet1’: table not found on channel
# Thank you sincerely in advance for any help with this problem.
Mark Miller
Gainesville, Florida
--
View this message in context: http://old.nabble.com/Reading-multiple-Excel-2007-files-with-a-loop-tp26414828p26414828.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list