2012-03-18 4 views
-1

こんにちはすべて私はpython openpyxlモジュールを使って1つのxlsxファイルを読んでいます。私はこのファイルを読んでいるときに、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行は、デフォルトの表現valuedatetimeオブジェクトを出力します。ドキュメントをチェックして、どのような方法でフォーマットするかを確認してください。

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 
関連する問題