2012-03-18 3 views
-1

Привет всем, я читаю один файл xlsx с помощью модуля python openpyxl. когда я читаю этот файл, меняя его формат даты даты в xlsx. как я могу получить то же значение, что и в файле excel. мой код:Python openpyxl.reader.excel данные чтения

def xlsxToxCsv(inputfile, outfile): 
    start = time.clock() 
    wb=load_workbook(inputfile) 
    for sheet in wb.worksheets: 
     csv_file=outfile 
     print 'Creating %s' % csv_file 
     fd=open(csv_file, 'wt') 
     for row in sheet.rows: 
      values=[] 
#   print row 
      for cell in row: 
       value=cell.value 
       if sheet.is_date(value): 
        print value 
#    print value 
       if value is None: 
        value='' 
       if not isinstance(value, unicode): 
        value=unicode(value) 
       value=value.encode('utf8') 
       value = "\""+value+"\"" 
       values.append(value) 
#   print (','.join(values)) 
#   print values 
      fd.write(','.join(values)) 
      fd.write('\n') 
     fd.close() 
     end = time.clock() 
     print 'Code time %.6f seconds' % (end - start) 
     return csv_file 

Может ли кто-нибудь помочь мне получить такое же значение файла excel. в Excel файл дата, как 4/27/2009, но в csv я получаю 2009-06-12 00:00:00, как.

+0

Что не работает на вас? Каков ваш результат при запуске кода? В любом случае измените переменную 'end' на что-то еще, поскольку это сохраненное слово в python. – user850498

+0

, когда я читаю значение из файла xlsx, дата находится в файле xlsx, например, 4/27/2009, но когда я получаю значение 'value = cell.value', этот код печатает как 2009-06-12 00:00:00 , –

+0

Конечная переменная - это просто ее проверка времени обработки. –

ответ

0

Ваша линия print value печатает стандартное представление value, a datetime объект. Ознакомьтесь с документацией, чтобы узнать, как ее форматировать любым способом.

0

Введите даты с помощью этой функции, чтобы получить значения даты.

def make_date(xlnum): 
    from datetime import date 
    from datetime import timedelta 
    year = timedelta(days=xlnum) 
    my_birthday = date(1899, 12, 30) 
    return my_birthday + year