写入CSV会丢失Excel格式。

时间:2017-11-21 03:41:03

标签: python csv openpyxl

我正在尝试格式化Excel工作表并将其写入CSV文件。我可以使用openpyxl格式化文件,但是,当我将其写入CSV文件时,格式化将丢失。 excel表有2个值,日期" 2017年9月25日和#34; pi的价值和#34; 3.14159265359"。格式化Excel工作表后,Excel工作表中的值为" 2017-09-25"和" 3.14"。但在写入CSV文件后,值为CSV是" 2017-09-25 00:00:00"和" 3.14159265359"

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天,但没有运气。任何帮助是极大的赞赏!谢谢。

1 个答案:

答案 0 :(得分:1)

当然,CSV没有格式化的概念,只有数据。 Excel格式化会更改数据的显示而不会更改基础数据本身(否则,例如,一旦您将数据从“0.000000”格式更改为“0.000”,您就永远无法返回)。

如果您真的希望格式“坚持”,您将需要操纵数据本身(在您的示例的情况下,通过将日期转换为您希望的方式格式化的字符串,并舍入pi的值) ,而不是格式化。