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

在AWS Databricks(Python 3.9.5)中用PySpark拆分多Sheet Excel为多个文件

在AWS Databricks(Python 3.9.5)拆分多工作表Excel为单个文件

前置准备

  1. 安装Spark Excel依赖:在Notebook中执行以下命令,安装后重启内核生效
%pip install spark-excel

或者通过集群库管理添加Maven包:com.crealytics:spark-excel_2.12:0.14.0(需匹配集群Spark的Scala版本)

实现代码

# 获取源Excel的所有工作表名称
sheet_names_df = spark.read \
    .format("com.crealytics.spark.excel") \
    .option("header", "false") \
    .option("inferSchema", "false") \
    .option("sheetName", "__ALL_SHEETS__") \
    .load("dbfs:/mnt/your-storage/source_file.xlsx")  # 替换为你的源文件路径(支持DBFS/S3)

sheet_names = sheet_names_df.select("sheet_name").distinct().rdd.flatMap(lambda x: x).collect()

# 遍历每个工作表,导出为独立Excel文件
for sheet in sheet_names:
    # 读取当前工作表数据
    df = spark.read \
        .format("com.crealytics.spark.excel") \
        .option("header", "true") \
        .option("inferSchema", "true") \
        .option("sheetName", sheet) \
        .load("dbfs:/mnt/your-storage/source_file.xlsx")
    
    # 定义输出路径(每个工作表对应一个文件)
    output_path = f"dbfs:/mnt/your-storage/output/{sheet}.xlsx"
    
    # 保存文件
    df.write \
        .format("com.crealytics.spark.excel") \
        .option("header", "true") \
        .option("sheetName", sheet) \
        .mode("overwrite") \
        .save(output_path)
    
    print(f"工作表 {sheet} 已导出至 {output_path}")

重要提示

  • 路径配置:替换代码中的源路径和输出路径,支持DBFS(dbfs:/...)或已挂载的S3路径,确保集群有对应存储的读写权限
  • 参数调整:根据Excel实际结构调整header(是否有表头)、inferSchema(是否自动推断字段类型),若表头不在第一行,添加option("startRow", n)指定起始行
  • 版本兼容:Spark Excel的版本需匹配集群的Scala和Spark版本,比如Spark 3.x对应Scala 2.12,使用0.14.0版本的依赖包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:35:21