2014-08-29 3 views
-1

У меня есть список, чтобы быть экспортированы в файл Excel, сохраняя соответствующий формат, я прибег к библиотеке имени xlsxwriter,Написать список в Excel файл с Python

вот пример: 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- , если я избегаю преобразовать в формат даты файл будет genreated, но столбцы и строки перевернутый

Есть ли любая идея, как это сделать, я надеюсь, что я был в описании

+0

Каков формат вывода, который вы ожидаете? Почему вы повторяете * и * распаковываете 'расходы' (который представляет собой список из четырех элементов, скобки не имеют значения)? Почему бы вам не использовать значащие имена переменных ('x' - это имя? Давай!)? – jonrsharpe

+0

Я отредактировал описание, чтобы сделать его более четким, мой запрос прост: как вставить список в файл excel с управлением форматом ячейки (дата, строка, номер ...) – user3708197

+0

Ваш * "спрос" * ?! Как вы думаете, что это? 'costs' - это только последняя' запись' из 'list' (которую вы не должны называть' list'). Вы пытаетесь написать один и тот же «элемент» в три отдельных столбца; разве это не должно быть три разных значения? Я предлагаю вам добавить некоторые 'print' и посмотреть, как выглядят ваши данные. – jonrsharpe

ответ

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() 
Смежные вопросы