2013-11-17 3 views
1

Я использовал библиотеку pyExcelerator некоторое время, она работает красиво. Теперь я хотел бы иметь возможность экспортировать даты python в формат даты на листе excel. Я не могу узнать (я прочитал документацию), как это сделать. Любые предложения?pyExcelerator формат даты

+0

Что оригинальный формат дат, которые вы пытаетесь разобрать? – nickzam

+0

Мне понадобится дата python для файла excel. Я хотел бы, чтобы ячейка файла excel была датой. – gpasse

ответ

1

Вариант 1:

Просто преобразовать строку типа даты и времени, вы получили от разбора. Здесь я предполагаю, что вы исправили формат даты:

import csv 
from datetime import datetime 
date_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p') 

rows = ['foo', 'bar', date_object] 

with open('export.csv', 'wb') as csv_file: 
    writer = csv.writer(csv_file, delimiter=',', quoting=csv.QUOTE_MINIMAL) 
    writer.writerow(rows) 

Вариант 2

Используйте xlwt модуль. Пример:

#!/usr/bin/env python 
# -*- coding: windows-1251 -*- 
# Copyright (C) 2005 Kiseliov Roman 

from xlwt import * 
from datetime import datetime 

w = Workbook() 
ws = w.add_sheet('Hey, Dude') 

fmts = [ 
    'M/D/YY', 
    'D-MMM-YY', 
    'D-MMM', 
    'MMM-YY', 
    'h:mm AM/PM', 
    'h:mm:ss AM/PM', 
    'h:mm', 
    'h:mm:ss', 
    'M/D/YY h:mm', 
    'mm:ss', 
    '[h]:mm:ss', 
    'mm:ss.0', 
] 

i = 0 
for fmt in fmts: 
    ws.write(i, 0, fmt) 

    style = XFStyle() 
    style.num_format_str = fmt 

    ws.write(i, 4, datetime.now(), style) 

    i += 1 

w.save('dates.xls') 

Еще примеры: https://github.com/python-excel/xlwt/tree/master/xlwt/examples

+0

Мне нужен файл EXCEL и Excel CELL, формат которого Date – gpasse

+0

Excel умеет читать CSV-файлы. Во всяком случае, добавлена ​​опция 2 с модулем xlwt. – nickzam

+0

Выглядит отлично. благодаря – gpasse

0

Это функция я сделал. Думал, что кто-то там может найти для этого какое-то применение.

import datetime 
from pyexcelerate import Workbook 
from pyexcelerate.Format import Format 

def data_to_xlsx(data): 
    wb = Workbook() 
    for sheet_name in data: 
     headers = data[sheet_name]['headers'] 
     rows = [row.itervalues() if isinstance(row, dict) else row for row in data[sheet_name]['objects']] 
     ws = wb.new_sheet(sheet_name, data=[headers]+rows) 
     ws.range((1, 1), (1, len(headers))).style.font.bold = True 
     datecols = [] 
     if rows: 
      for x in xrange(len(rows[0])): 
       for row in rows: 
        value = row[x] 
        if value is not None: 
         if isinstance(value, datetime.datetime): 
          datecols.append((x, 'yyyy-mm-dd hh:mm:ss')) 
         elif isinstance(value, datetime.date): 
          datecols.append((x, 'yyyy-mm-dd')) 
         elif isinstance(value, datetime.time): 
          datecols.append((x, 'hh:mm:ss')) 
         break 
      for col, format in datecols: 
       ws.range((2, col+1), (len(rows)+1, col+1)).style.format = Format(format) 
    return wb 

Он принимает вложенную Dict, который включает необходимые вещи, такие как имена листов, заголовки строки и возвращает объект Workbook. Функция в основном вставляет данные в рабочий лист, а затем применяет форматы даты и времени, даты или времени для всех столбцов.

Пример параметра будет:

data = { 
    'List': { 
     'headers': ('First name', 'Last name'), 
     'objects': [ 
      ('Duane', 'Chow'), 
      ('Chris', 'Mara'), 
      ('Dan' , 'Wachsberger'), 
      ('Ron' , 'Forenall'), 
      ('Jack' , 'McGann'), 
      ('Andrew' , 'Holt'), 
      ('Anthony' , 'Perez'), 
      ('Isaac' , 'Conley'), 
      ('William' , 'Moniz'), 
      ('Harris' , 'Boivin'), 
      ('Raymond' , 'Martinez') 
     ] 
    } 
} 
wb = data_to_xlsx(data) 
Смежные вопросы