Databricks PySpark:将Excel列格式从常规改为数值格式
解决Spark Excel输出Decimal列显示为常规格式的问题
直接通过crealytics.spark.excel库参数设置单元格格式
不需要额外依赖openpyxl,com.crealytics.spark.excel本身支持通过styleMap参数指定Excel单元格的显示格式,写入时直接配置即可:
完整代码示例
# 先将目标列转换为decimal(15,3)格式 df = df.withColumn("target_col", df["target_col"].cast("decimal(15,3)")) # 写入Excel时添加styleMap参数指定数值显示格式 df.write.format("com.crealytics.spark.excel") .option("header", True) .option("styleMap", "decimal -> \"#,##0.000\"") # 匹配所有decimal类型列,设置为3位小数的数值格式 .mode("overwrite") .save(outputPath)
关键参数说明
styleMap采用[匹配规则] -> [Excel格式字符串]的写法:- 针对所有decimal类型列统一设置:
decimal -> "#,##0.000" - 针对指定列单独设置:
"col1: #,##0.000, col2: #,##0.000"(多列用逗号分隔)
- 针对所有decimal类型列统一设置:
- Excel格式字符串
#,##0.000会强制列显示为带千分位分隔符、保留3位小数的数值格式,完全匹配你需要的decimal(15,3)精度。
注意事项
- 确保使用的
com.crealytics.spark.excel版本在2.0.0及以上,旧版本可能不支持styleMap参数 - ADLS路径的访问权限已正常配置(你能写入文件说明权限无问题,此条仅作排查参考)
内容的提问来源于stack exchange,提问作者Apoorv Tomar
相关产品推荐
相关产品推荐

