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

