R语言readxl包读取Excel指定工作表报错问题咨询
故障表现
- 此前可正常运行的读取同个Excel多工作表的R代码,突然触发报错:
Error:
pathdoes not exist: ‘data/GTSurveyCoded with financial status-2.xlsx’
- 异常特征:显式指定
sheet参数为文件第一个工作表时可正常读取,尝试读取其余任意工作表均触发上述报错 - 已完成前置排查:确认目标Excel文件已正常保存、
readxl包更新至最新版本、文件路径与文件名无拼写错误
故障复现代码如下:
library(readxl) library(ggplot2) PostSurveyData = read_excel("data/GTSurveyCoded with financial status-2.xlsx", sheet = "GTPostSure")
修复操作(按优先级从高到低尝试)
- 优先修复Excel文件结构损坏
这是该类突发故障的最高发原因:如果文件存放在同步盘(OneDrive、坚果云、企业云盘等),同步过程中编辑、上次保存时程序异常退出,都会导致xlsx内部结构损坏,此时readxl只能识别首个工作表,读取其余表时会误报路径不存在。
操作:手动打开目标Excel文件,点击「文件-另存为」,重新存为一个新的.xlsx格式文件,替换代码里的文件路径为新文件路径后重新运行即可。 - 排查工作表名称的不可见字符
不要手动输入工作表名称,先运行以下代码获取文件内所有工作表的真实名称,复制返回结果里的对应表名填入sheet参数:
常见问题包括工作表名前后带不可见空格、全角半角符号混淆、残留特殊控制字符,肉眼识别的名称和实际存储的名称不一致,导致匹配失败。# 括号内替换为你的文件实际路径 excel_sheets("data/GTSurveyCoded with financial status-2.xlsx") - 排查文件占用与路径异常
- 关闭所有打开该Excel文件的程序(WPS、Office Excel等),解除文件锁定后重试
- 如果文件存放在系统受保护目录(C盘根目录、Program Files文件夹等),将文件移动到普通非系统保护目录(比如项目文件夹、桌面)后重试
- 放弃相对路径,用
file.choose()手动选择文件获取绝对路径测试,排除工作目录变动导致的匹配问题:
运行后在弹出的文件选择窗口手动选中目标文件即可。PostSurveyData = read_excel(file.choose(), sheet = "GTPostSure")
- 临时兼容方案
如果上述操作都无效,将需要读取的目标工作表单独另存为独立的xlsx文件,再用read_excel读取,绕过原多工作表文件的结构异常。
内容的提问来源于stack exchange,提问作者Matt Murray
相关产品推荐
相关产品推荐

