首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XLConnect对空单元造成故障

XLConnect对空单元造成故障
EN

Stack Overflow用户
提问于 2015-10-28 20:58:40
回答 1查看 214关注 0票数 0

我有一堆Excel电子表格,我需要从中读取某些单元格。我已经构建了一个循环来遍历所有的工作簿和工作表,但是为了简化,我已经放弃了下面问题中的循环。

并非所有工作表或单元格都将填充数据,但如果单元格为空,则XLConnect将返回一个空数据帧,从而导致错误。

要进行复制,请在工作目录中创建一个名为xlsxtestFile.xlsx文件。在Sheet1上,在单元格A1B2中键入所需的任何内容,然后保存并关闭该文件。然后运行以下代码。

代码语言:javascript
复制
# 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)))

第一批将返回:

代码语言:javascript
复制
  A1.Col1 B2.Col1
1   data1   data2

第二批将返回:

代码语言:javascript
复制
Error in data.frame(A1 = list(Col1 = "data1"), B2 = list(Col1 = "data2"),  : 
  arguments imply differing number of rows: 1, 0

有什么办法让这件事成功吗?我搜索了一下,发现XLConnect有一个SetMissing函数,但是它似乎是用来定义字符串,比如blankNA

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-28 21:16:52

试试这个:

代码语言:javascript
复制
sapply(positionsToRead, 
       function(x) readWorksheetFromFile("testFile.xlsx",  
                                         sheet='Sheet1', 
                                         region=x, 
                                         header=FALSE,
                                         autofitRow = FALSE,
                                         autofitCol = FALSE))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33401486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档