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

如何向SFTP上的Excel文件写入数据?CSV可行但Excel为空问题排查

问题分析与解决

问题原因

你用xlsxwriter写入SFTP的Excel文件为空,核心原因是XlsxWriter的Workbook对象需要显式调用close()方法——它只会在关闭时才将所有工作表数据、文件元数据写入到输出流中。而CSV写法能正常工作,是因为csv.writer在操作过程中会逐步刷新缓冲区,且with块结束时会自动完成文件收尾操作。

修复后的代码

只需在写完数据后调用workbook.close(),就能确保内容正确写入SFTP文件:

import paramiko
import xlsxwriter

# 建立并打开SFTP连接的代码

TheList = [['name', 'address'], ['peter', 'london']]

with sftp.open(SftpPath + "anewfile.xlsx", mode='wb', bufsize=32768) as f:
    workbook = xlsxwriter.Workbook(f)
    worksheet = workbook.add_worksheet()
    for row_num, data in enumerate(TheList):
        worksheet.write_row(row_num, 0, data)
    # 关键:显式关闭workbook,完成文件内容的写入
    workbook.close()

补充说明

  • XlsxWriter的Workbook初始化后不会立即写入内容,而是将数据暂存于内存,直到调用close()才会生成完整的Excel文件结构并写入输出流。
  • 若省略close(),with块结束时仅会关闭文件句柄,但Workbook的内容从未写入流中,最终SFTP上的文件自然为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:45:33