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

使用xlsxwriter将np.array写入Excel指定单元格时报TypeError如何解决

问题解决方法

错误原因

xlsxwriter的write()方法原生不支持直接写入numpy.ndarray类型的对象,只能接收Python原生的标量、字符串等类型参数,因此直接传入numpy数组会触发类型错误。另外你原代码中连续两次写入B14单元格,后写入的内容会直接覆盖前一次内容,可根据需求调整单元格位置避免内容丢失。

核心解决方案

你预期要在单个单元格内显示[[ 0, 540, 1920, 540]]格式的内容,只需要先将numpy数组转换为Python原生嵌套列表,再序列化为字符串写入即可。

修改后的参考代码:

import xlsxwriter
import numpy as np

# 此处HEIGHT、WIDTH为你原有定义的变量
self.outputs['redlines']=np.array([[0, HEIGHT/2, WIDTH, HEIGHT/2]])

outWorkbook = xlsxwriter.Workbook('parameter.xlsx')
outSheet=outWorkbook.add_worksheet('Tabelle1')

outSheet.write('A13','dts:')
# 将self.dts写入B13避免被后续内容覆盖
outSheet.write('B13', self.dts)
outSheet.write('A14','outputs Redlines:')
# 先转原生列表再转字符串写入,完全匹配你要的显示格式
outSheet.write('B14', str(self.outputs['redlines'].tolist()))
outWorkbook.close()

可选扩展方案

如果你需要把数组的四个数值拆分到B14、C14、D14、E14四个相邻单元格,可以使用write_row方法直接写入一维数组:

# 取二维数组的第一行,转列表后写入连续单元格
outSheet.write_row('B14', self.outputs['redlines'][0].tolist())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:48:02