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

如何在R中批量读取非A1起始的多份Excel文件并合并数据

批量处理Excel工作簿并合并为DataFrame

核心思路

先把单个文件的处理逻辑封装成函数,再遍历文件列表批量执行,最后合并所有结果。以下是基于pandas的高效实现方案:

代码实现

import pandas as pd

def process_single_excel(file_path):
    # 读取B10:N13区域的4行数据
    df_chunk = pd.read_excel(
        file_path,
        usecols='B:N',  # 限定读取B到N列
        skiprows=9,     # 跳过前9行,从第10行(B10)开始读取
        nrows=4         # 读取4行(覆盖B10到N13)
    )
    
    # 提取B10:N10作为列名
    column_names = df_chunk.iloc[0].tolist()
    # 提取B13:N13的% Positive数据
    data_row = df_chunk.iloc[3].tolist()
    
    # 读取B2单元格的日期
    date = pd.read_excel(
        file_path,
        usecols='B',
        skiprows=1,     # 跳过第1行,读取第2行(B2)
        nrows=1,
        header=None
    ).iloc[0, 0]
    
    # 构造单文件结果DataFrame
    single_result = pd.DataFrame([data_row], columns=column_names)
    single_result['日期'] = date  # 添加日期字段
    
    return single_result

# 假设你已获取的文件列表为file_list
# file_list = ['file1.xlsx', 'file2.xlsx', ...]

# 批量处理所有文件
all_results = []
for file in file_list:
    try:
        res = process_single_excel(file)
        all_results.append(res)
    except Exception as e:
        print(f"处理文件{file}出错: {str(e)}")

# 合并所有结果为一个DataFrame
final_df = pd.concat(all_results, ignore_index=True)

关键细节说明

  • usecols='B:N':精准限定读取列范围,避免加载无关数据提升处理效率
  • skiprows和nrows:直接定位目标行区域,无需读取整个Excel文件
  • 异常捕获:避免单个文件处理失败导致整个批量任务中断
  • ignore_index=True:合并后重置索引,保证结果DataFrame索引连续

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:52:15