ROBDC SqlSave:如何将数据导出到 Excel 工作表中?
Posted
技术标签:
【中文标题】ROBDC SqlSave:如何将数据导出到 Excel 工作表中?【英文标题】:ROBDC SqlSave: How to export data into Excel sheets? 【发布时间】:2011-12-14 08:18:19 【问题描述】:我正在尝试将数据从 R 导出到一个 Excel 文件(到不同的工作表):
library(plyr)
library(RODBC)
g <- lapply(iris, function(x) as.data.frame(table(x)))
save2excel <- function(x) sqlSave(xlsFile,
x, tablename = x[1], rownames = FALSE)
xlsFile <- odbcConnectExcel("C:/Temp/iris.xls", readOnly = FALSE)
l_ply(g, save2excel)
odbcCloseAll()
这会产生错误:
Error in sqlColumns(channel, tablename) :
‘1:35’: table not found on channel
问题出在tablename = x[1]
,如何将列表名转化为工作表名?
【问题讨论】:
【参考方案1】:您必须以某种方式为您的函数提供names(g)
。最简单的解决方案类似于mapply
。
此外,无论出于何种原因,Excel ODBC 驱动程序似乎都不喜欢工作表名称中的点,即使 Excel 本身可以处理它们。因此,您必须将“Sepal.Length”之类的名称更改为“Sepal_Length”等。
全文:
g <- lapply(iris, function(x) as.data.frame(table(x)))
names(g) <- gsub("\\.", "_", names(g))
xl <- odbcConnectExcel("c:/temp/iris.xls", readOnly=FALSE)
mapply(sqlSave, dat=g, tablename=names(g),
MoreArgs=list(channel=xl, rownames=FALSE))
odbcCloseAll()
【讨论】:
以上是关于ROBDC SqlSave:如何将数据导出到 Excel 工作表中?的主要内容,如果未能解决你的问题,请参考以下文章