1

我正在准备一份报告,我需要或多或少地每周重新运行一次。它需要在 Excel 中发送给客户端,我一直在为 R 使用 XLConnect 包并取得了巨大的成功,但我遇到了一个我自己似乎无法解决的问题。

给定以下代码:

simple <- data.frame(a = c(1,2,3,,4,5), b = c(1,2,3,4,5))

library(XLConnect)
prcntg <- createCellStyle(wb)
setDataFormat(prcntg, format = "0.0")

wb <- loadWorkbook("foo.xlsx", create = FALSE)

sheet <- "bar"
createSheet(wb, sheet)

writeWorksheet(wb, simple, sheet = sheet)
rows <- 1:5
cols <- 1:2
setCellStyle(wb, sheet = sheet, row = rows, col = cols, cellstyle = prcntg)

我希望将值打印为:

a   | b
1.0 | 1.0
2.0 | 2.0
3.0 | 3.0
etc.

但是,他们进入工作表是:

a | b
1 | 1
2 | 2
3 | 3
etc.

我如何得到前者而不是后者。根据我在这里看到的文档和帖子:https ://miraisolutions.wordpress.com/2011/08/31/xlconnect-a-platform-independent-interface-to-excel/

我觉得我做的一切都是对的,但显然我不是。

4

1 回答 1

1

以下似乎对我有用:

wb <- loadWorkbook("~/Desktop/foo.xlsx", create = TRUE)
prcntg <- createCellStyle(wb)
setDataFormat(prcntg, format = "0.0")

sheet <- "bar"
createSheet(wb, sheet)

writeWorksheet(wb, simple, sheet = sheet)
rows <- 2:6
cols <- 1:2
setCellStyle(wb, sheet = sheet, row = rep(2:6,times = 2), col = rep(1:2,times = 6), cellstyle = prcntg)
saveWorkbook(wb)

这运行(带有警告)。请注意 中的 row 和 col 参数的规范setCellStyle。但是,我不愿意假设这也适用于您,因为 XLConnect 最近对我来说有点不稳定(我在 OS X 上,必须在 2.15.0 上从源代码构建它,因为它失败了CRAN 检查所以没有二进制文件)。

于 2012-04-24T22:17:20.333 回答