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

Python使用xlsxwriter与pandas读写Excel文件时遇异常问题

问题排查与修复方案

咱们一步步拆解你代码里的问题,再给出能正常运行的修复版本:

原代码的核心问题

  1. 没有执行实际写入操作:你创建了工作簿和工作表,但从头到尾都没调用worksheet.write或worksheet.write_row这类方法把数据写入Excel——相当于打开了文件但啥内容都没写就关了。
  2. 过早且重复关闭工作簿:你在循环里就调用了workbook.close(),这时候数据还没写入,而且后面又重复调用了一次,这不仅会导致写入失败,还可能引发IO错误。
  3. 循环逻辑无效:你用enumerate(a)遍历外层列表[array],拿到的col是0、data是整个数组,但没有对这个data做任何写入处理,等于循环白跑了一趟。

修复后的完整代码

import xlsxwriter
import pandas as pd

# 创建工作簿和工作表
workbook = xlsxwriter.Workbook('arrays.xlsx')
worksheet = workbook.add_worksheet()

# 要写入的目标数据
array = [0.222333333333333, 0.048150492835172518, 'a12', 'a13', 'a14']
a = [array]  # 二维列表,代表一行数据
print('writedata=', a)

# 执行写入操作:遍历二维列表,逐行写入工作表
for row_num, row_data in enumerate(a):
    # 从第row_num行、第0列开始,写入整行数据
    worksheet.write_row(row_num, 0, row_data)

# 所有写入完成后,仅需调用一次close保存文件
workbook.close()

# 读取Excel:因为没有表头,指定header=None避免把数据行当作表头
x = pd.read_excel('arrays.xlsx', header=None)
print('readdata=', x)

关键修改说明

  • 添加有效写入逻辑:用worksheet.write_row一次性写入整行数据,比逐个单元格写入更高效;如果需要自定义单元格格式,也可以用worksheet.write(row, col, value)逐个写入。
  • 修正工作簿关闭时机:必须在所有写入操作完成后,再调用一次workbook.close(),确保所有数据都被持久化到文件中。
  • 读取时适配无表头场景:你的数据没有表头,pandas默认会把第一行当作表头,加上header=None参数后,读取结果会完全匹配你写入的数组结构。

运行结果验证

执行修复后的代码,你会看到如下输出,读取结果和写入数据完全一致:

writedata= [[0.222333333333333, 0.048150492835172518, 'a12', 'a13', 'a14']]
readdata=           0         1    2    3    4
0  0.222333  0.048150  a12  a13  a14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:15:35