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

使用Openpyxl向Excel单元格写入列表报错ValueError的技术问询

问题原因

新版openpyxl对单元格值的类型检查更严格,不再支持直接将列表赋值给单个单元格的value属性——Excel单元格本身不存储列表类型数据,旧版可能做了隐式转换(自动转为字符串),新版则明确禁止这种不符合Excel数据模型的操作。

解决方案

根据你的需求选择对应方案:

方案1:将列表转为字符串存入单个单元格

如果需要把整个列表作为文本内容放在(1,1)单元格,将列表转换为字符串即可,可自定义格式:

from openpyxl import Workbook
wb1 = Workbook()
ws1 = wb1.create_sheet(index=None, title="2020")
ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]

# 直接转成Python列表格式的字符串
ws1.cell(1,1).value = str(ls)

# 或者用逗号分隔元素,生成更易读的文本
# ws1.cell(1,1).value = ", ".join(map(str, ls))

wb1.save("result.xlsx")

方案2:将列表元素逐个写入单元格(一行/一列)

如果需要把列表元素分别存入不同单元格:

写入同一行(A1、B1、C1...)

from openpyxl import Workbook
wb1 = Workbook()
ws1 = wb1.create_sheet(index=None, title="2020")
ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]

for col_num, value in enumerate(ls, start=1):
    ws1.cell(row=1, column=col_num).value = value

wb1.save("result.xlsx")

写入同一列(A1、A2、A3...)

from openpyxl import Workbook
wb1 = Workbook()
ws1 = wb1.create_sheet(index=None, title="2020")
ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]

for row_num, value in enumerate(ls, start=1):
    ws1.cell(row=row_num, column=1).value = value

wb1.save("result.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:12:57