简体   繁体   中英

How to write a list to xlsx using openpyxl

I have a list of some values in Python and want to write them into an Excel-Spreadsheet using openpyxl.

So far I tried, where lstStat is a list of integers that needs to be written to the Excel file:

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

I'm getting a TypeError: 'NoneType' object is not callable for the last line in the code snipet.

Can you help me out how to write my data to the Excel file?

Cheers Thomas

To assign a value to a cell, use = :

cell.value = statN

You also need to fix your loops. Notice that right now, for each element in lstStat , you are writing the entire range . Besides not being what you intended, it also is less flexible: What happens if lstStat has more or fewer elements?

What you want to do is just loop over lstStat and increment the row number as you go. Something like

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

You could also use Python's enumerate function:

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

(Note that A1 is referenced as cell(row=1, column=1) as of OpenPyXL version 2.0.0 ; in earlier versions, A1 was cell(row=0, column=0) .)

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

Openpyxl does not allow you to write lists in excel cells, however if you convert the list into a string you can paste it into excel.

eg This would cause an error

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

However this would paste the string of the list into excel

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM