2017-11-21 8 views
0

ExcelシートをフォーマットしてCSVファイルに書き込もうとしています。私はopenpyxlを使ってファイルをフォーマットすることができますが、CSVファイルに書き込むと、フォーマットは失われます。 Excelシートには、2つの値、「2019年9月25日」、および「3.14159265359」の値があります。 Excelシートをフォーマットした後、Excelシートの値は "2017-09-25"と "3.14"になります。しかし、CSVファイルへの書き込みの後、値はCSVである「2017年9月25日夜12時〇〇分00秒」であり、「3.14159265359」CSVに書き込むとExcelの書式が失われます。

import openpyxl, csv 


try: 
    wb = openpyxl.load_workbook("./Decimals.xlsx", data_only="True") 
    sheet = wb.active 

    for r in sheet.rows: 
     r[0].number_format = "YYYY-MM-DD" 
     r[1].number_format = "0.00" 
    wb.save("Decimals.xlsx") 
except Exception as e: 
    print(e) 

with open('trialCSV.csv', 'w', newline='') as csvFile: 

    c = csv.writer(csvFile) 

    for r in sheet.rows: 
     c.writerow([cell.value for cell in r]) 

私は同様の問題で検索しましたが、私はいずれかを見つけることができませんでした。私は2日間このソリューションを見つけようとしていますが、運はありません。どんな助けでも大歓迎です!ありがとうございました。

+0

私はなぜdownvoteですか?それに答えるために十分な情報があれば、私には妥当な質問のようです。 – Eric

答えて

1

CSVには書式設定の概念はなく、データのみはありません。 Excelの書式設定によって、データの表示自体が変更されることなく、データの表示が変更されます(たとえば、データを「0.000000」から「0.000」に変更すると、元に戻すことはできません)。

実際にフォーマットを「スティック」にしたい場合は、データ自体を操作する必要があります(例の場合、日付を希望のフォーマットの文字列に変換し、piの値を丸めます) )、書式設定ではありません。

+0

ありがとう!それはいくつかの有用な洞察でした。私はそのようには思っていませんでした!再度、感謝します! – Ghost

関連する問題