我有一堆Excel电子表格,我需要从中读取某些单元格。我已经构建了一个循环来遍历所有的工作簿和工作表,但是为了简化,我已经放弃了下面问题中的循环。
并非所有工作表或单元格都将填充数据,但如果单元格为空,则XLConnect将返回一个空数据帧,从而导致错误。
要进行复制,请在工作目录中创建一个名为xlsx的testFile.xlsx文件。在Sheet1上,在单元格A1和B2中键入所需的任何内容,然后保存并关闭该文件。然后运行以下代码。
# Load packages
library(XLConnect)
# Define positions to read
positionsToRead = c('A1', 'B2')
# This will work as A1 and B2 have data
data.frame(sapply(positionsToRead, function(x) readWorksheetFromFile("testFile.xlsx", sheet='Sheet1', region=x, header=FALSE)))
# Change positions to read
positionsToRead = c('A1', 'B2', 'C3')
# This will fail, as C3 has no data
data.frame(sapply(positionsToRead, function(x) readWorksheetFromFile("testFile.xlsx", sheet='Sheet1', region=x, header=FALSE)))第一批将返回:
A1.Col1 B2.Col1
1 data1 data2第二批将返回:
Error in data.frame(A1 = list(Col1 = "data1"), B2 = list(Col1 = "data2"), :
arguments imply differing number of rows: 1, 0有什么办法让这件事成功吗?我搜索了一下,发现XLConnect有一个SetMissing函数,但是它似乎是用来定义字符串,比如blank到NA。
发布于 2015-10-28 21:16:52
试试这个:
sapply(positionsToRead,
function(x) readWorksheetFromFile("testFile.xlsx",
sheet='Sheet1',
region=x,
header=FALSE,
autofitRow = FALSE,
autofitCol = FALSE))https://stackoverflow.com/questions/33401486
复制相似问题