如何使用openpyx将列表写入xlsx

2024-05-23 19:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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”对象不能为代码snipet的最后一行调用。

你能帮我把数据写入Excel文件吗?

托马斯干杯


Tags: 文件in列表forwslinecellrange
3条回答

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

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)。)

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

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')

相关问题 更多 >