Sorry, I thought the code was clear, but probably not. As far as I know, the "gdata" package requires perl. My read.xls function requires RODBC. If you don't have perl, my function works well, but if you have perl, the gdata package can do a better job of reading mixed-type (character/numeric) columns from Excel. The arguments to my read.xls function: file: name of the Excel file sheet: this is the name that appears on the tab at the bottom of the worksheet condition: this is an additional SQL expression that can be passed to the RODBC calls.
Kevin On Fri, Feb 5, 2010 at 9:27 AM, Gabor Grothendieck <ggrothendi...@gmail.com>wrote: > Yes. Get it from here: > http://www.activestate.com/activeperl/ > > On Fri, Feb 5, 2010 at 10:10 AM, Gábor Pozsgai <pozsg...@gmail.com> wrote: > > Thank you both. > > Gabor, do I need perl to be installed onj my computer to use those > functions? > > > > Gabor > > > > 2010/2/5 Kevin Wright <kw.s...@gmail.com>: > >> I have a function to read xls files that tells me the name of the > available > >> sheets. See below. > >> > >> Kevin Wright > >> > >> > >> read.xls = function (file, sheet, condition) > >> { > >> if (missing(file)) > >> stop("No file specified.") > >> if (!file.exists(file)) > >> stop("File ", file, " does not exist in directory ", > >> getwd()) > >> if (missing(sheet)) > >> stop("No sheet specified.") > >> if (!require(RODBC, quietly = TRUE)) > >> stop("The RODBC package is required.") > >> channel = odbcConnectExcel(file) > >> if (!RODBC:::odbcValidChannel(channel)) > >> stop("first argument is not an open RODBC channel") > >> tables <- sqlTables(channel) > >> tables <- if (is.data.frame(tables)) > >> tables[, "TABLE_NAME"] > >> else "" > >> tables <- gsub("\\$$", "", gsub("'", "", tables)) > >> if (!(sheet %in% tables)) { > >> odbcClose(channel) > >> msg <- paste(paste("'", tables, "'", sep = ""), collapse = " ") > >> stop("Couldn't find requested sheet.\n", " Available sheets > are: ", > >> msg) > >> } > >> qsheet <- paste("[", sheet, "$]", sep = "") > >> if (missing(condition)) > >> data <- sqlQuery(channel, paste("select * from", qsheet)) > >> else data <- sqlQuery(channel, paste("select * from", qsheet, > >> condition)) > >> odbcClose(channel) > >> if (length(grep("#", names(data))) > 0) > >> cat("Caution: Column names may have had '.' changed to '#'.\n") > >> cat("Caution: Be careful with mixed-type columns that begin with\n") > >> cat(" some (15?) rows that are only numeric.\n") > >> cat(" Use str() and summary() to check the import.\n") > >> return(data) > >> } > >> > >> > >> On Fri, Feb 5, 2010 at 8:13 AM, Gábor Pozsgai <pozsg...@gmail.com> > wrote: > >>> > >>> Dear All, > >>> > >>> I would like to count or list the names of the existing worksheets > >>> within an .xls file. Any hints? > >>> > >>> Thaks, > >>> > >>> Gabor > >>> > >>> -- > >>> Pozsgai Gábor > >>> www.coleoptera.hu > >>> www.photogabor.com > >>> > >>> ______________________________________________ > >>> R-help@r-project.org mailing list > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide > >>> http://www.R-project.org/posting-guide.html > >>> and provide commented, minimal, self-contained, reproducible code. > >> > >> > >> > >> -- > >> Kevin Wright > >> > >> > > > > > > > > -- > > Pozsgai Gábor > > www.coleoptera.hu > > www.photogabor.com > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Kevin Wright [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.