为什么不用相对有更多教程的RODBC包?
最重要的原因是RODBC包只能在32位系统下运行,而我的是64位系统,无法运行RODBC;其次是xlsx()包允许设置excel单元格的格式,功能还比较强大。
前不久用xlsx()包写了两个操作excel文件的脚本,遇到一些问题,将经验记录如下:
在读取的xlsx文件第一行是合并单元格时报错,无法通过调整startRow参数修改,只能手工删除第一行解决。
出现了很奇怪的问题,在用addDataFrame对工作表写入数据时,不管startRow怎么设置,总要往上抹掉一行,而且在下面一行会写入一行原来最早输入的第一行数据,再往下如果按照startRow是跳过的,也会在下面写入新数据,然后在startRow设定的行数开始写数据。
百思不得其解,删掉数据的行名、列名,不排序,用原来的数据,试了很久都不行。但之前对另一个表使用addDataFrame函数都是正常的,而且参数几乎一致。想到是不是工作表对象没有关闭,导致写入数据错乱?
关掉R环境,重新加载,一次成功。
教训:对同一个对象连续应用addDataFrame函数要特别小心,上一次的运行可能会影响下一次的结果。
以下扩展包可以读取xlsx文件:CRAN - Package xlsx
awalker89/openxlsx · GitHub
CRAN - Package RODBC 通过 odbcConnectExcel2007 连接到xlsx表格,然后通过SQL选择表格中的数据
hadley/readxl · GitHub 最新的一个扩展包,可以跨平台、无依赖地读取xls, xlsx中的表格数据。