【问题标题】:How to write a list to Excel column?如何将列表写入 Excel 列?
【发布时间】:2013-02-06 22:18:02
【问题描述】:

我有一个 Python 中的一些值的列表,并希望使用 openpyxl 将它们写入 Excel 电子表格列。

到目前为止,我尝试过,其中lstStat 是需要写入 Excel 列的整数列表:

for statN in lstStat:
    for line in ws.range('A3:A14'):
        for cell in line:
            cell.value(statN)

我得到了一个TypeError: 'NoneType' object is not callable 用于代码 sn-p 中的最后一行。

你能帮我看看如何将我的数据写入 Excel 列吗?

【问题讨论】:

  • cell.value 不是函数,因此不可调用

标签: python openpyxl


【解决方案1】:

要为单元格赋值,请使用=

cell.value = statN

您还需要修复循环。请注意,现在,对于lstStat 中的每个 元素,您正在编写整个范围。除了不是你想要的,它也不太灵活:如果lstStat 有更多或更少的元素会发生什么?

你想要做的只是循环 lstStat 并随你增加行号。类似的东西

r = 3
for statN in lstStat:
    ws.cell(row=r, column=1).value = statN
    r += 1

您也可以使用 Python 的 enumerate 函数:

for i, statN in enumerate(lstStat):
    ws.cell(row=i+3, column=1).value = statN

(请注意,从 OpenPyXL version 2.0.0 开始,A1 被引用为 cell(row=1, column=1);在早期版本中,A1 为 cell(row=0, column=0)。)

【讨论】:

  • 嗯,这就是诀窍... :) 不幸的是,它将列表的每个值写入范围内的每个单元格,我最终使范围只填充了最后一个值.. . ;) 干杯!
【解决方案2】:

Openpyxl 不允许您在 excel 单元格中编写列表,但是如果您将列表转换为字符串,则可以将其粘贴到 excel 中。

例如这会导致错误

my_list = ['1','2','3'] ws.cell(row=r, column=1).value = my_list

但是这会将列表的字符串粘贴到 excel 中

my_list = ['1','2','3'] new_list = str(my_list) ws.cell(row=r, column=1).value = new_list

【讨论】:

    【解决方案3】:
    from openpyxl import load_workbook,Workbook
    
    wb=load_workbook('Book1.xlsx')
    ws1=wb.get_sheet_by_name('Sheet1')
    
    shs=wb.get_sheet_names()
    print(type(shs))
    # shs is list
    
    for r in range(0,len(shs)):
        ws1.cell(row=r+1,column=1).value=shs[r]
    
    wb.save('Book1.xlsx')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 2018-12-06
      • 2017-09-06
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多