You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用read_xls读取xls文件时报libxls错误如何解决?

解决方案

核心问题为Windows系统默认download.file使用文本模式下载二进制文件,导致xls文件结构损坏无法被libxls识别,可按以下步骤修复:

  • 第一步:修改下载代码,添加mode = "wb"参数指定二进制下载模式,90%以上的同类问题可通过该操作解决,修改后的下载代码为:
    download.file(url = url, destfile = temp, mode = "wb")
  • 若修改后仍报错,可依次尝试以下操作:
    1. 更换下载工具:使用httr包的GET方法下载,避免系统默认下载工具的兼容问题,示例代码:
    library(httr)
    GET(url, write_disk(temp, overwrite = TRUE))
    
    1. 适配文件格式:部分机构会将xlsx格式文件重命名为xls后缀,可尝试用read_xlsx(temp, sheet = 1)读取,或使用openxlsx、readODS等其他读取包测试。
    2. 规避路径问题:你的临时文件路径中存在空格(用户名Jon Doe),可指定无空格的本地路径存储文件,测试是否为路径识别异常导致的报错。

修改后可直接在Windows运行的完整代码

rm(list = ls(all = TRUE))

#加载运行代码所需的依赖包
library(dplyr)
library(tidyverse)
library(readxl)
library(stringr)
library(taRifx)
library(lubridate)

#设置xls文件的URL链接
url <- "https://files.hawaii.gov/dbedt/economic/data_reports/DLIR/LFR_LAUS_LF.xls"

#创建临时文件存储下载的xls文件,指定二进制模式适配Windows系统
temp <- tempfile(fileext = "xls")
download.file(url = url, destfile = temp, mode = "wb")

#定义函数筛选所需列:日期(第2列)、劳动力(第3列)、就业人数(第4列)、失业率(第6列)
keep_cols <- function(data) {
  data <- data %>%
    select(2,3,4,6) %>%
    rename(date = 1, lf = 2, empl = 3, ur = 4)
  
  return(data)
}

#将xls工作表导入R环境
state_xls <- read_xls(temp, sheet = 1) %>% keep_cols() %>% mutate(geo = "HI")

内容的提问来源于stack exchange,提问作者OGC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:36:01