繁体   English   中英

使用RODBC读取.xls文件时不使用名称

[英]Not using colnames when reading .xls files with RODBC

我还有另一个令人困惑的问题。

我需要使用RODBC读取.xls文件。 基本上,我需要一张纸中所有单元的矩阵,然后使用抓钩和裂片等将数据取出。 由于每个工作表都包含以不同顺序排列的多个表,以及一些文本字段以及介于两者之间的其他选项,因此我需要一些功能类似于readLines()功能,但随后需要使用Excel工作表。 我相信RODBC是做到这一点的最佳方法。

我的代码的核心是以下功能:

.read.info.default <- function(file,sheet){
    fc <- odbcConnectExcel(file)    # file connection
    tryCatch({
      x <- sqlFetch(fc,
                    sqtable=sheet,
                    as.is=TRUE,
                    colnames=FALSE,
                    rownames=FALSE
           )
      },
      error = function(e) {stop(e)},
      finally=close(fc)
    )

    return(x)
}

但是,无论我尝试什么,它总是将上述工作表的第一行作为返回数据帧的变量名。 不知道如何解决。 根据文档, colnames=FALSE应该防止这种情况。

我想避免使用xlsReadWrite包。 编辑:和gdata包。 客户端在系统上没有Perl,也不会安装它。


编辑:

我放弃了xlsReadWrite包中的read.xls() 除了名称问题外,事实证明RODBC不能真正读取带有斜杠等特殊符号的单元格。 格式为“ dd / mm / yyyy”的日期刚刚给出了NA。

查看sqlFetch,sqlQuery和sqlGetResults的源代码,我意识到问题很可能是驱动程序造成的。 某种程度上,工作表的第一行被视为某些列特征,而不是普通的单元格。 因此,它们不是名称,而是数据库字段的名称。 这是您无法设置的选项...

您可以在gdata中使用基于Perl的解决方案吗? 那碰巧也是便携式的...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM