R语言读取Excel文件

本文总结了R语言中读取Excel文件的多种方法,包括RODBC、xlsx、openxlsx、gdata和readxl包,分析了各自的优缺点。RODBC效率高但有坑,如需读取所有sheet或处理混合类型数据时会出现问题;xlsx和openxlsx能解决类型问题但效率较低;gdata和readxl各有优势,但gdata可能因Perl编码问题处理中文字符时出错,readxl不支持.xls文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为一个项目需要,原始数据全部是Excel文件,包括.xls和.xlsx格式,并且很多excel数据的格式并不规范,一个个转为csv格式不太现实,所以把所有能了解到的读取excel的方法都试了一遍,做个简单汇总。

相关的包:RODBC、xlsx、openxlsx、gdata、readxl,测试平台win7。

RODBC包-相关方法

RODBC-odbcConnectExcel2007()、odbcConnectExcel()、sqlFech()、sqlTables()

安装

install.packages(“RODBC”, dependencies=TRUE) #可能需要安装一些依赖包

使用方法

#64位机下,.xls和.xlsx文件用相同方法
library(RODBC)
con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
sqlTables(con) #查看该xlsx文件中有哪些表
#           TABLE_CAT TABLE_SCHEM TABLE_NAME   TABLE_TYPE REMARKS
# 1 D:\\R\\RODBC.xlsx        <NA>  商品信息$ SYSTEM TABLE    <NA>
# 2 D:\\R\\RODBC.xlsx        <NA>  补充说明$ SYSTEM TABLE    <NA>
# 3 D:\\R\\RODBC.xlsx        <NA>  销售信息$ SYSTEM TABLE    <NA>
table_test <- sqlFetch(con,"销售信息")
table_test
odbcClose(con)

#32位机下,.xls和.xlsx文件主要在方法odbcConnectExcel2007()和odbcConnectExcel()的差异,其余方法相同
con <- odbcConnectExcel ("D:/R/RODBC.xlsx") #
sqlTables(con) #查看该xlsx文件中有哪些表
table_test <- sqlFetch(con,"销售信息")
odbcClose(con)

优缺点说明

RODBC主要是读取数据库的包,是我接触到的读取Excel中效率最高的。并且还有sqlQuery方法可以写SQL灵活读取数据。并且能够同时读取.xls和.xlsx文件。.

在简单比较了各种方法后,觉得RODBC真是神器,并且没有各种乱七八糟的限制,于是欢快地选择了它,事实证明它的确是又快又爽,可是也隐藏了许多潜在的坑爹特性,不深入了解根本没办法发现。如果你有幸看到,说不定可以提前绕过某些坑,或者无法绕过,只能另择新欢。

坑No1.

必须通过Sheet名读取表,一个Excel文件里面可能有多个sheet表,所以你要读取其中某张表,或者所有表,必须提前知道每张表的表名。如下图中的”销售信息”、”商品信息”、”补充说明”。此坑影响不大,并且用sqlTables可以查到表名,可以解决这个问题。

#在表结构相同的情况下,读取所有的表内容
con <- odbcConnectExcel2007("D:/R/RODBC.xlsx") #64位机下方法
tbls <- sqlTables(con)
table_test <- sqlFetch(con, tbls$TABLE_NAME[3])
odbcClose(con)

坑No2.

当某一列有不同类型的数值时,就悲剧了,

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值