使用spark-excel读取Excel时,如何仅读取值而非公式?
解决方案
要确保使用com.crealytics:spark-excel读取Excel时仅获取单元格值(包括跨工作表公式的计算结果),可以按以下方式调整配置:
关键参数说明
readFormula: false:核心配置,强制读取单元格的计算后的值,而非公式文本本身。usePlainNumberFormat: true:可选优化配置,确保数值类型单元格以原始数值格式读取,避免格式转换导致的异常。dataAddress:需明确指定目标工作表,格式如'目标工作表名'!A1(或具体单元格范围),确保精准读取目标区域。
调整后的代码
sparkDF = spark.read.format("com.crealytics.spark.excel") .option("header", "true") .option("maxRowsInMemory", 100) .option("inferSchema", "true") .option("dataAddress", "'目标工作表名'!A1") # 明确指定目标工作表 .option("readFormula", "false") .option("setErrorCellsToFallbackValues", "true") .option("usePlainNumberFormat", "true") # 新增,优化数值读取效果 .load(filepath)
额外注意事项
- 确保Excel文件已保存公式计算结果:如果跨工作表公式未完成计算并保存,库可能无法读取到正确的计算值(Spark-Excel依赖Excel文件中缓存的计算结果)。
- 若仍有公式文本被读取,检查
dataAddress是否准确指向目标工作表,避免误读处于公式编辑状态的单元格。
内容的提问来源于stack exchange,提问作者kiran kumar
相关产品推荐
相关产品推荐

