使用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
相关产品推荐
相关产品推荐

