使用Mirai的XLConnect格式化数字

时间:2012-04-24 21:46:17

标签: r

我正在准备一份报告,我需要每周或多或少地重新运行一次。它需要在Excel中访问客户端,并且我一直在使用XLConnect软件包获得R,但是我遇到了一个我似乎无法自行解决的问题。

给出以下代码:

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/

我觉得我做的一切都很正确,但显然我不是。

1 个答案:

答案 0 :(得分: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)

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