使用XLConnect读取Excel工作表报错:Sheet index (-1)超出范围
解决XLConnect读取工作表报错的问题
嘿,我来帮你理清楚这个问题!你遇到的报错核心是语法参数传错了,这也是新手很容易犯的小错误,别担心,咱们一步步解决:
直接报错原因
你执行readWorksheet("BASZ", sheet = "Sheet1")时,第一个参数传的是字符串"BASZ",但readWorksheet()要求第一个参数必须是你之前通过loadWorkbook()创建的workbook对象(也就是你赋值的变量BASZ,不带引号)。
当你传字符串的时候,XLConnect会误以为你要加载名为"BASZ"的文件,但这个文件要么不存在,要么里面没有Sheet1,所以才会抛出"Sheet index (-1) is out of range"的错误。
正确代码示例
把引号去掉,传入workbook对象就可以了:
# 这步你是对的,成功创建workbook对象 BASZ <- loadWorkbook("BASZ.xlsx", create = TRUE) # 修正第一个参数:用变量BASZ,而非字符串"BASZ" data <- readWorksheet(BASZ, sheet = "Sheet1")
额外排查(如果修正后仍有问题)
如果改了参数还是报错,可以按以下步骤排查:
- 确认你的Excel文件里确实存在名为
Sheet1的工作表(注意大小写,比如有的文件是sheet1或者自定义表名,别写错) - 用
getSheets()查看当前workbook里的所有工作表名称,确认目标表名:getSheets(BASZ) - 重启R并重新加载XLConnect包,有时候RStudio重启后Java连接可能异常:
detach("package:XLConnect", unload = TRUE) library(XLConnect)
内容的提问来源于stack exchange,提问作者Jonah_huggins
相关产品推荐
相关产品推荐

