【发布时间】:2012-09-20 11:07:25
【问题描述】:
这是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 中的所有其他软件包都是最新的)。
-
好的,与此相关的第二个问题:该线程提到 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)
如果有人可以提供一种编写 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)
【问题讨论】:
-
Joris 的 XLConnect 代码也非常适合我。你能显示你正在运行但不起作用的确切代码吗?
-
尝试先在 Excel 中创建工作簿,添加一些格式,然后将代码稍微更改为
create = FALSE。 -
感谢您的快速答复!只需将代码插入问题中即可。
-
create = FALSE效果一样 -
@MartinStuder:是的!这确实解决了问题!非常感谢!它通过在我尝试“全选”或按您所说的选择行/列时直接格式化单元格来工作。天哪,我没想到这种可能性!