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

在R中读取多工作表Excel文件并提取指定填充色单元格内容

R提取Excel多工作表中带底色单元格内容的实现方法

前置依赖

使用openxlsx包处理Excel文件的样式和内容,该包无需依赖Java环境,兼容性较好。

操作步骤

  • 第一步:安装并加载依赖包
# 安装包(首次使用执行即可)
install.packages(c("openxlsx", "dplyr"))
# 加载包
library(openxlsx)
library(dplyr)
  • 第二步:加载Excel工作簿并获取所有工作表名称
# 替换为你本地的Excel文件路径
excel_path <- "你的本地文件存储路径.xlsx"
# 加载工作簿
wb <- loadWorkbook(excel_path)
# 获取所有工作表名称
sheet_names <- sheets(wb)
  • 第三步:遍历所有工作表,提取黄色填充单元格内容
# 初始化结果存储列表
result_list <- list()
# 定义待匹配的黄色填充色值(标准黄色为FFFF00,可根据实际填充色调整)
target_color <- "FFFF00"

for (sheet in sheet_names) {
  # 读取当前工作表所有数据
  sheet_data <- readWorkbook(wb, sheet = sheet)
  # 获取当前工作表所有单元格的样式
  cell_styles <- getStyles(wb, sheet = sheet)
  # 获取所有单元格的填充前景色
  fill_colors <- sapply(cell_styles, function(x) x$fill$fillFg$rgb)
  # 筛选出颜色匹配的单元格位置
  target_cells <- which(fill_colors == target_color)
  
  # 提取对应单元格的值
  for (cell_idx in target_cells) {
    cell_info <- attr(cell_styles[[cell_idx]], "positions")
    cell_value <- sheet_data[cell_info$row, cell_info$col]
    # 存入结果列表
    result_list[[length(result_list) + 1]] <- data.frame(
      工作表名称 = sheet,
      单元格位置 = paste0(LETTERS[cell_info$col], cell_info$row),
      单元格内容 = as.character(cell_value),
      stringsAsFactors = FALSE
    )
  }
}
  • 第四步:合并结果为data.frame格式
final_result <- bind_rows(result_list)
# 查看提取结果
print(final_result)

色值调整说明

如果你的目标填充色不是标准黄色,可在遍历代码中运行print(fill_colors)打印所有单元格的填充色值,替换target_color的取值即可适配自定义底色的提取需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:42:02