使用R语言readxl包read_excel读取xls文件报错求助
解决Win10下R读取多工作表xls文件失败的问题
这种跨系统的xls读取问题我之前碰到过好几次,结合你描述的情况——单工作表xls能正常读、Win7下没问题、换了多个包都失效,大概率是文件在Win10的Office环境下存在兼容性标记或者细微的格式损坏,给你几个针对性的排查和解决步骤:
重新保存文件修复兼容性
打开目标xls文件,点击文件>信息,如果看到「兼容模式」的提示,选择另存为>Excel 97-2003工作簿(*.xls),注意要重新生成一个文件(不要直接覆盖原文件)。Win10的Office对旧格式文件的解析逻辑和Win7有差异,重新保存能消除很多潜在的格式异常。指定单个工作表读取排查问题
先不要默认读取全部工作表,试试指定单个工作表读取,定位是否是某一个工作表的格式问题导致整体读取失败:library(readxl) # 先获取所有工作表名称 sheet_list <- excel_sheets("你的文件路径.xls") # 测试读取第一个工作表 test_data <- read_excel("你的文件路径.xls", sheet = sheet_list[1])如果单个工作表能正常读取,再用循环批量读取所有工作表:
all_sheets_data <- lapply(sheet_list, function(sheet_name) { read_excel("你的文件路径.xls", sheet = sheet_name) }) names(all_sheets_data) <- sheet_list检查文件权限与锁定状态
确认目标文件没有被Excel或其他程序后台锁定,Win10的文件权限管控更严格,锁定状态会导致R无法读取文件。右键文件选择属性,取消「只读」标记;同时打开任务管理器,结束所有Excel相关进程后再尝试读取。尝试纯R实现的openxlsx包
你试过的xlsx包依赖Java环境,可能Win10下的Java配置有隐性问题,而openxlsx是纯R实现,对旧xls格式的兼容性表现不错:install.packages("openxlsx") library(openxlsx) test_data <- read.xlsx("你的文件路径.xls", sheet = 1)终极方案:转存为CSV格式读取
如果以上方法都无效,直接用Win10的Excel打开文件,将每个工作表单独另存为「CSV(逗号分隔)」格式,然后用R的read.csv()读取CSV文件——这是彻底规避格式兼容问题的稳妥办法。
内容的提问来源于stack exchange,提问作者navneet pande




