【发布时间】:2014-08-29 10:31:10
【问题描述】:
我有一个要导出到保持适当格式的 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- 如果我避免转换为日期格式,文件将被分类但列和行被翻转
有什么想法吗,希望我在描述中清楚
【问题讨论】:
-
您期望的输出格式是什么?你为什么要遍历 和 解包
expenses(这是一个四项列表,括号无关紧要)?为什么不使用有意义的变量名(x是名字?来吧!)? -
我编辑了描述以使其更清晰,我的需求很简单:如何在管理单元格格式(日期、字符串、数字...)的情况下将列表插入到 Excel 文件中
-
你的“需求”?!你觉得这是什么?
expenses只是list的最后一个entry(你不应该命名为list)。您正在尝试将相同的item写入三个单独的列;那不应该是三个不同的值吗?我建议你输入一些prints,看看你的数据实际上是什么样子的。 -
我应该称它为字典而不是列表吗? ,好吧,你是对的,那我该怎么做
-
...你为什么要这样做?它是一个列表,而不是字典,但如果您将其命名为
list,您将阻止访问内置的list。这不是代码编写服务;我建议你阅读ericlippert.com/2014/03/05/how-to-debug-small-programs。
标签: python excel date-format