Here is a program that will get a list of the sheet names and then read in the indicated name. Modify to suit.
library(rcom) xls <- "C:\\test.xls" oxl <- comCreateObject('Excel.Application') comSetProperty(oxl, "Visible", TRUE) owb <- comGetProperty(oxl, "Workbooks") ob <- comInvoke(owb, "Open", xls) osheets <- comGetProperty(ob, "Worksheets") n <- comGetProperty(osheets, "Count") ithSheetName <- function(i) comGetProperty(comGetProperty(osheets, "Item", i), "Name") sheetNames <- sapply(1:n, ithSheetName) comInvoke(oxl, "Quit") library(gdata) read.xls(xls, match("xyz", sheetNames), na.strings = "na ") On Thu, Mar 12, 2009 at 10:46 AM, Juergen Rose <r...@rz.uni-potsdam.de> wrote: > Hi, > > I would like to some excel files with some worksheets. I tried this with > the following R script: > > library(gdata) > i<-1 > rc<-0 > while(rc != "try-error") { > > wksh<-try(read.xls("cluster-microarray-FW.xls",sheet=i,verbose=TRUE,perl="perl")) > rc<-class(wksh) > print(sprintf("------- i=%2d rc=%s ---------------",i,rc)) > if (rc != "try-error") { > print("--- summary(wksh)= -----"); print(summary(wksh)) > i <- i+1 > } > } > > At first I found the problem that xls2csv adds one space to the every > item in the last column. > The second problem is, that I could not found an a possibility to save > the name of the worksheet. It is shown on the screen, if I use the last > script. I see something like > > Writing Sheet number 1 ('strenger') to file > '/tmp/RtmpFpSkBB/file327b23c6.csv' > > The word in the single quotes is the name of the worksheet. > Therefore I tried to redirect the standard output to a file > > library(gdata) > i<-1 > rc<-0 > while(rc != "try-error") { > log=paste("text.log",i,sep="") > print("log="); print(log) > #con<-file(log,open="wt") > #sink(con, type=c("output","message")) > #sink(con, type="output") > #sink(con, type="message") > sink(log) > > wksh<-try(read.xls("cluster-microarray-FW.xls",sheet=i,verbose=TRUE,perl="perl")) > sink() > rc<-class(wksh) > print(sprintf("------- i=%2d rc=%s ---------------",i,rc)) > if (rc != "try-error") { > cmd<-paste("sed -n \"s/.*[(](.*)[)].*/\1/p\" ",log," > text.log") > system(cmd) > #unlink(log) > print("--- summary(wksh)= -----"); print(summary(wksh)) > i <- i+1 > } > } > > But now I don't find the information about Writing Sheet number in > text.log*. Any hint appreciated. > > Regards > > -- > Juergen Rose <r...@rz.uni-potsdam.de> > Uni-Potsdam > > ______________________________________________ > 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.