在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
相关产品推荐
相关产品推荐

