使用Python将列表写入Excel文件

-1 投票
1 回答
6059 浏览
提问于 2025-04-18 19:40

我有一个列表想要导出到Excel文件中,并且保持合适的格式,所以我使用了一个叫做xlsxwriter的库。

这里有个例子: xlsxwriter

这是我的列表:

{'FirstName': u'Forence','LastName': u'Bidorst', 'Salary': -6775000.0, 'BirthDate': datetime.datetime(2013, 6, 20, 0, 0)}
{'FirstName': u'Oliver','LastName': u'Bidorst', 'Salary': -6775000.0, 'BirthDate': datetime.datetime(2013, 6, 20, 0, 0)}
{'FirstName': u'Mathew','LastName': u'Stark', 'Salary': -6775000.0, 'BirthDate': datetime.datetime(2013, 6, 20, 0, 0)}
{'FirstName': u'Sphed','LastName': u'liomst', 'Salary': -6775000.0, 'BirthDate': datetime.datetime(2013, 6, 20, 0, 0)}

我修改了代码来遍历这个列表并把它插入到文件里,

def export_result_XL():
 list=get_list()
 ...

 # Write some data headers.
 worksheet.write('A1', 'First Name', bold)
 worksheet.write('B1', 'Last Name', bold)
 worksheet.write('C1', 'Salary', bold)
 worksheet.write('D1', 'Birth Date', bold)

 # Some data we want to write to the worksheet.

 for entry in list:
     x = str(entry['FirstName'])
     y = str(entry['LastName'])
     z = str(entry['Salary'])
     e = str(entry['BirthDate'])
     v = BirthDate[:10]  # because the date format is like yyyy-mm-dd 00:00:00

     expenses = (
             [x,y ,z ,v]
                 )

 # Start from the first cell below the headers.
 row = 1
 col = 0
for item ,str1,str2,str3,date_str in (expenses):
 # Convert the date string into a datetime object.
 date = datetime.strptime(date_str, "%Y-%m-%d")

 worksheet.write_string  (row, col,     str1              )
 worksheet.write_string  (row, col + 1,     str2              )
 worksheet.write_string(row, col + 2,     str3              )
 worksheet.write_datetime(row, col + 3, date, date_format )


     row += 1

 # Write a total using a formula.
 #worksheet.write(row, 0, 'Total', bold)
 #worksheet.write(row, 2, '=SUM(C2:C5)', money_format)

 workbook.close()

 return ''

我在这里遇到了两个问题:

1 -

 for item, date_str in (frais) 
        ValueError: too many values ​​to unpack 

2 - 如果我不把数据转换成日期格式,文件会生成,但是列和行会颠倒。

有没有什么办法可以解决这个问题,希望我的描述够清楚。

1 个回答

1

最后我找到了解决办法:

 row = 1
 col = 0
 for entry in list:
    print entry

    strdate=str(entry['BirthDate'])
    formatdate=strdate[:10]
    date = datetime.strptime(str(formatdate), "%Y-%m-%d")

    worksheet.write_string  (row, col,     entry['FirstName']              )
    worksheet.write_string  (row, col+1,     entry['LastName']              )
    worksheet.write_number  (row, col+6,     entry['Salary'],number_format  )
    worksheet.write_datetime(row, col+10,    date, date_format )
    row += 1

 workbook.close()

撰写回答