R语言操作Excel文件
一、R语言读取Excel数据
(1)使用剪贴板的读取excel
首先将Excel数据复制到剪贴板,然后读取剪贴板数据,是可行的,但总觉得不是好办法
data = read.table("clipboard", header=TRUE, sep="\t")
data
(2)XLConnect程序包(推荐)
使用XLConnect的包直接读取excel文件,就是这个包依赖于XLConnectJars包,比较大(15.7M)
install.packages("XLConnect") #安装XLConnect程序包,仅需要安装一次
library("XLConnect")
data= readWorksheetFromFile("D:/workspace/data.xls", sheet=1, header=TRUE)
data
可能出现错误:
载入需要的程辑包:XLConnectJars
Error : loadNamespace()里算'rJava'时.onLoad失败了,详细内容:
调用: fun(libname, pkgname)
错误: JAVA_HOME cannot be determined from the Registry
In addition: Warning messages:
1: 程辑包‘XLConnect’是用R版本3.3.3 来建造的
2: 程辑包‘XLConnectJars’是用R版本3.3.3 来建造的
Error: 无法载入程辑包‘XLConnectJars’
解决方法;安装JDK,XLConnect程序包依赖于Java环境
(3)RODBC读取Excel(本方法失败)
ODBC数据源里面找不到excel的驱动程序,原因是office是32为版本,安装的驱动程序无法在64位的win7上使用。运行c:\windows\sysWOW64\odbcad32.exe后,可以配置32为的ODBC数据源。
conn = odbcConnect("contacts")
Warning messages:
1: In odbcDriverConnect("DSN=contacts") :
[RODBC] ERROR: state IM014, code 0, message [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
2: In odbcDriverConnect("DSN=contacts") : ODBC connection failed
使用odbcConnectExcel方法,不支持64位的windows,错误如下:
odbcConnectExcel("D:/workspace/data.xls")
Error in odbcConnectExcel("c:/r-workspace/contacts.xls") :
odbcConnectExcel is only usable with 32-bit Windows
二、R语言写数据到Excel
直接使用XLConnect程序包进行数据的写入。
(1)写入所有数据
InsertDataSIR<-function(Dir,SIR,webName)
{
#1.加载程序包
#install.packages("XLConnect")
library(XLConnect); #加载读取Excel程序包
#读取或创建一个XLSX文件,建立连接
xls<-loadWorkbook(Dir,create=TRUE)
#创建工作表
createSheet(xls,name=webName)
#写入数据 从左上角开始
writeWorksheet(xls,SIR,webName,startRow = 1,startCol=1,header = FALSE)
#保存文档,此时才会创建
saveWorkbook(xls)
}
(2)按行写入数据
InsertDataSIRByRow<-function(Dir,rSIR,webName,row)
{
#1.加载程序包
#install.packages("XLConnect")
library(XLConnect); #加载读取Excel程序包
#读取或创建一个XLSX文件,建立连接
xls<-loadWorkbook(Dir,create=TRUE)
#创建工作表
createSheet(xls,name=webName)
#写入数据 从左上角开始
writeWorksheet(xls,rSIR,webName,startRow = row,startCol=1,header = FALSE)
#保存文档,此时才会创建
saveWorkbook(xls);
print(paste("插入SIR数据",as.character(row),webName));
}
- 点赞
- 收藏
- 关注作者
评论(0)