[R] Saving Splitted Series to Excel via XLConnect

Henrique Andrade henrique.coelho at gmail.com
Thu Aug 9 03:33:05 CEST 2012


Dear Rui and David,

Thanks a lot for your help and advices. Now finally I have
what I want ;-) The final code looks like this:

<R code begin>

dados <- data.frame(matrix(c("2012-01-01","2012-02-01",
  "2012-03-01","2012-04-01","2012-05-01","2012-06-01",
  "2012-01-01","2012-02-01","2012-03-01","2012-04-01",
  "2012-05-01","2012-06-01","2012-01-01","2012-02-01",
  "2012-03-01","2012-04-01","2012-05-01","2012-06-01",
  0.56,0.45,0.21,0.64,0.36,0.08,152136,153081,155872,
  158356,162157,166226,33.47,34.48,35.24,38.42,35.33,
  34.43,433,433,433,433,433,433,2005,2005,2005,2005,
  2005,2005,3939,3939,3939,3939,3939,3939),nrow=18,
  ncol=3,byrow=FALSE,dimnames=list(c(1,2,3,4,5,6,7,8,9,
  10,11,12,13,14,15,16,17,18),c("date","value","code"))))

dados2 <- split(dados, dados$code)

library(XLConnect)

wb <- loadWorkbook("Henrique.xlsx", create = TRUE)
series <- seq_along(dados2)
createSheet(wb, name = "Planilha")

lapply(series, function(i){
	column <- (3*i) - 2
	writeWorksheet(wb, dados2[[i]], sheet = "Planilha",
        startCol = column)})
saveWorkbook(wb)

<R code end>

I did not use the option to build a new sheet for each "i"
because I have more than 200 objects in my real problem.

Again, many thanks to you guys!

Best regards (or "Um abraço"),
Henrique Andrade


2012/8/8 Rui Barradas <ruipbarradas em sapo.pt>:
> Hello,
>
> First of all, apologies to Henrique, he'll receive th same answer twice, but
> I forgot to Cc the list.
>
>
> In order to write 3 worksheets you need to create 3 worksheets. What
> happened is that you were overwriting the previous sheets and ended up just
> with the last one. So adopt a different method: lapply().
>
>
> wb <- loadWorkbook("Teste.xlsx", create = TRUE)
>
> series <- seq_along(dados2)
> sheet <- paste0("Teste", series)
> lapply(series, function(i){
>     createSheet(wb, name = sheet[i])
>     writeWorksheet(wb, dados2[[i]], sheet = sheet[i])})
>
> saveWorkbook(wb)
>
> This worked with me.
>
> Hope this helps,
>
> Rui Barradas
> Em 08-08-2012 21:10, Henrique Andrade escreveu:
>>
>> Dear R Discussion List,
>>
>>
>> I would like to save my data as a xlsx file. But at first
>> I need to split it and then save each series into a Excel
>> column. Please take a look at the following code:
>>
>> dados <- data.frame(matrix(c("2012-01-01","2012-02-01",
>>    "2012-03-01","2012-04-01","2012-05-01","2012-06-01",
>>    "2012-01-01","2012-02-01","2012-03-01","2012-04-01",
>>    "2012-05-01","2012-06-01","2012-01-01","2012-02-01",
>>    "2012-03-01","2012-04-01","2012-05-01","2012-06-01",
>>    0.56,0.45,0.21,0.64,0.36,0.08,152136,153081,155872,
>>    158356,162157,166226,33.47,34.48,35.24,38.42,35.33,
>>    34.43,433,433,433,433,433,433,2005,2005,2005,2005,
>>    2005,2005,3939,3939,3939,3939,3939,3939),nrow=18,
>>    ncol=3,byrow=FALSE,dimnames=list(c(1,2,3,4,5,6,7,8,9,
>>    10,11,12,13,14,15,16,17,18),c("date","value","code"))))
>>
>> dados2 <- split(dados, dados$code)
>> dados2
>>
>> library(XLConnect)
>>
>> wb <- loadWorkbook("Teste.xlsx", create = TRUE)
>> createSheet(wb, name = "Teste1")
>> writeWorksheet(wb, dados2, sheet = "Teste1")
>> saveWorkbook(wb)
>>
>> With this code I only get the "433" series. How could I
>> fix my code? How could I include the other series?
>>
>> Many thanks in advance,
>> Henrique Andrade
>>
>> ______________________________________________
>> R-help em 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.
>
>



-- 
Henrique Andrade



More information about the R-help mailing list