【发布时间】:2011-12-08 10:52:31
【问题描述】:
我正在尝试使用 RODBC 写入 Excel2007 文件,但我不断收到错误消息。我已将问题简化为这种非常基本的情况,即具有字符、数字、日期和逻辑数据类型的 1 行 data.frame:
toWrite = data.frame( Name = "joe" , Date = as.Date("2011-01-01"), Value = 2 , Paid = FALSE )
xlFile = odbcConnectExcel2007( "REPLACE_WITH_XLSB_FILE_PATH" , readOnly = FALSE )
sqlSave( xlFile , toWrite , tablename = "worksheet1" , rownames = FALSE )
错误:
Error in sqlSave(xlFile, toWrite, tablename = "worksheet1", rownames = FALSE) :
[RODBC] Failed exec in Update
22018 39 [Microsoft][ODBC Excel Driver]Invalid character value for cast specification
In addition: Warning message:
In odbcUpdate(channel, query, mydata, coldata[m, ], test = test, :
character data 'FALSE' truncated to 1 bytes in column 'Paid'
如果我将日期和逻辑列都转换为字符,那么一切正常。问题是这些现在是 Excel 中的字符,并且不能在没有转换的情况下用作预期的数据类型。我深入研究了 sqlSave 代码,它似乎在做正确的事情。有没有其他人遇到过这个问题?
【问题讨论】:
-
我可以确认问题,但我从未成功使用 RODBC 编写 Excel。这可能与逆问题有关:读取 Excel 只能在命名范围内可靠地工作。我现在总是将 XLConnect 用于所有与 Excel 相关的东西。
-
谢谢,迪特。如果您愿意依赖 Java,似乎可以很好地支持与 Excel 对话。我不能证明它只是为了让 R-> Excel 工作,因为我们内部不使用 java。否则,这将是一个明智的选择。 =)
-
问题仍然存在 7 年后,但函数中提供了新选项,但无论如何,对于较大的数据帧,该函数的速度令人难以置信,因此实际上最好的方法仍然是导出到 CSV 文件和然后导入 Excel