以下是Write from R into template in excel while preserving formatting的两个相关后续问题 我在这里写了一个新的帖子,因为我不能在另一个中评论答案。
实际上Joris Meys的答案/代码(6月27日)对我不起作用,我已经多次试过了。
所以再次:目的是在模板文件中使用格式化或只保留它时用R写一个excel文件。答案中提到了两种不同的工具:XLConnect和xlsx。
Joris Meys的答案基于XLConnect。但是使用完全相同的代码,我的结果是填充了新内容的单元格变为白色而没有任何保留的格式。所有其他单元格(没有插入新内容)确实接管了以前的样式。
我在WinXP中使用最新的RGui(32位)V。2.15.1以及XLConnect和xlsx的最新版本(我还检查了R中的所有其他软件包是否是最新的)。 / p>
确定与此相关的第二个问题:该主题提到xlsx作为替代方案。这些信息在我看来也是错误的。我检查了网站,开发人员似乎正在研究解决方案。目前我只看到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)
如果有人能够在保留R格式的同时编写excel文件的方式,那真的很酷。
编辑:这是代码(仅差异“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)
答案 0 :(得分:0)
问题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")
您只需将变量放在样式中使用的参数中即可。