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

Databricks无法导出DataFrame为Excel 同逻辑CSV导出正常

问题根因

报错核心是路径不匹配:

  • pandas.DataFrame.to_excel() 传入相对文件名时,默认将文件写入集群驱动节点的本地文件系统,默认存储路径是驱动节点的/databricks/driver/目录,不会自动写入DBFS存储。
  • 后续dbutils.fs.cp('dbfs:/df_xl.xlsx', ...)操作的是DBFS分布式文件系统的根路径,该路径下根本不存在你生成的xlsx文件,因此抛出文件不存在异常。

同逻辑导出CSV能运行,是因为你导出CSV时大概率使用的是Spark DataFrame原生的write.csv()方法,该方法默认写入的就是DBFS路径,不存在路径错位问题。如果用pandas的to_csv()写相对路径,会出现完全一样的找不到文件报错。

可直接复用的解决方法

方法1:直接写入DBFS挂载路径(最简便)

Databricks默认将DBFS挂载到驱动节点的本地/dbfs/目录下,pandas写文件时直接传入该前缀的路径,生成的文件会直接存到DBFS中,后续dbutils可以直接读取:

path = 'abfss://raw@tkm.dfs.core.windows.net/db_folder/'
# 写入时指定/dbfs/前缀的挂载路径
df1.to_excel('/dbfs/df_xl.xlsx', sheet_name='Sheet1', index=False)
# 拷贝时注意目标路径要写全文件名,不要只写文件夹
dbutils.fs.cp('dbfs:/df_xl.xlsx', path + 'output/df_xl.xlsx')

方法2:从驱动本地路径拷贝

如果已经按原代码写了本地文件,dbutils操作本地文件时需要加file:协议前缀,指向驱动节点的实际存储路径:

path = 'abfss://raw@tkm.dfs.core.windows.net/db_folder/'
df1.to_excel('df_xl.xlsx', sheet_name='Sheet1', index=False)
# 本地文件路径加file:前缀,指向驱动节点默认工作目录
dbutils.fs.cp('file:/databricks/driver/df_xl.xlsx', path + 'output/df_xl.xlsx')
排查校验步骤
  • 执行%sh ls /databricks/driver/ | grep xlsx,确认驱动节点本地目录下是否成功生成了xlsx文件,排除to_excel执行失败(比如缺少openpyxl依赖)导致没有生成文件的情况
  • 执行dbutils.fs.ls('dbfs:/') | grep xlsx,确认DBFS路径下文件存在后再执行拷贝操作
  • 拷贝到ADLS目标路径时,必须写全最终的文件名,不能只写到output文件夹层级,否则会出现文件命名异常、后续找不到的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:58:00