后续:在保存格式的同时,将R从R写入模板

这些是两个相关的后续问题, 从R写入Excel模板,同时保留我在这里写在一个新的线程的格式 ,因为我不能在另一个注释的答案。

  1. 实际上Joris Meys的回答/代码(6月27日)对我来说不起作用,我已经尝试了好几次了。

    所以再说一遍:其目的是在模板文件中使用格式化或者只是保存时使用R编写excel文件。 答案中提到了两种不同的工具:XLConnect和xlsx。

    Joris Meys的答案是基于XLConnect。 但是使用完全相同的代码,我的结果是充满新内容的单元格变成白色,没有任何保留的格式。 所有其他单元格(没有插入新内容的地方)确实接pipe了以前的风格。

    我在WinXP中使用最新的RGUI(32-bit)V. 2.15.1,以及最新版本的XLConnect和xlsx(我也只是检查了R中的所有其他软件包是最新的)。

  2. 好的第二个问题与此有关:线程提到xlsx作为替代。 这个信息在我看来也是错误的。 我检查了网站,开发者似乎正在研究一个解决scheme。 目前我只能在xlsx中看到在代码中手动编写格式的可能性,例如:

    cs2 <- CellStyle(wb) + Font(wb, name="Courier New", isBold=TRUE) + # add a Font Borders(col="blue", position=c("TOP", "BOTTOM"), pen="BORDER_THICK") + # add borders Alignment(h="ALIGN_RIGHT") 

    (来源: http : //code.google.com/p/rexcel/wiki/LowLevelAPI )

    如果有人可以给出一个写excel文件的方法,同时保存R的格式,这将是非常酷的。

编辑:这是代码(只有区别“Sheet1”而不是“aSheet”,但我也试过其他变种。

 require(XLConnect) wb <- loadWorkbook("test.xlsx", create=TRUE) setStyleAction(wb,XLC$"STYLE_ACTION.NONE") Data <- data.frame( a = 1:10, b = letters[1:10] ) writeWorksheet(wb,Data,"Sheet1",startRow=1,startCol=1,header=TRUE) saveWorkbook(wb) 

问题1:

格式化单元格的示例代码:

 library('xlsx') # create the workbook wb <- createWorkbook() sheet <- createSheet(wb, sheetName="addDataFrame1") data <- data.frame(mon=month.abb[1:10], day=1:10, year=2000:2009, date=seq(as.Date("1999-01-01"), by="1 year", length.out=10), bool=c(TRUE, FALSE), log=log(1:10), rnorm=10000*rnorm(10), datetime=seq(as.POSIXct("2011-11-06 00:00:00", tz="GMT"), by="1 hour", length.out=10)) cs1 <- CellStyle(wb) + Font(wb, isItalic=TRUE) # rowcolumns cs2 <- CellStyle(wb) + Font(wb, color="blue") cs3 <- CellStyle(wb) + Font(wb, isBold=TRUE) + Border() # header addDataFrame(data, sheet, startRow=3, startColumn=2, colnamesStyle=cs3, rownamesStyle=cs1, colStyle=list('2'=cs2, '3'=cs2)) # save the workbook ... saveWorkbook(wb, "test.xlsx") 

看到输出文件。

问题2:

 cs2 <- CellStyle(wb) + Font(wb, name="Courier New", isBold=TRUE) + # add a Font Borders(col="blue", position=c("TOP", "BOTTOM"), pen="BORDER_THICK") + # add borders Alignment(h="ALIGN_RIGHT") 

你只需要把variables放在你在样式中使用的参数中。