我在Python中有一些值的列表,并希望使用openpyxl将它们写入Excel-Spreadsheet。
到目前为止,我尝试过,其中lstStat是需要写入Excel文件的整数列表:
for statN in lstStat:
for line in ws.range('A3:A14'):
for cell in line:
cell.value(statN)
我遇到了一个TypeError:'NoneType'对象不能代码snipet中的最后一行调用。
您能帮我解决如何将数据写入Excel文件的问题吗?
干杯托马斯
答案 0 :(得分:8)
要为单元格指定值,请使用=
:
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)
。)
答案 1 :(得分:1)
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')
答案 2 :(得分:0)
Openpyxl不允许您在Excel单元格中编写列表,但是如果将列表转换为字符串,则可以将其粘贴到Excel中。
e.g。这会导致错误
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