代码之家  ›  专栏  ›  技术社区  ›  Ghost

写入CSV会丢失excel格式。

  •  0
  • Ghost  · 技术社区  · 7 年前

    我正在尝试格式化excel工作表并将其写入CSV文件。我可以使用openpyxl格式化文件,但是,当我将其写入CSV文件时,格式会丢失。excel表有2个值,日期为“2017年9月25日”,pi值为“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])
    

    我已经搜索了类似的问题,但我没有找到任何。我已经两天没有找到解决这个问题的方法了,但是运气不好。非常感谢您的帮助!非常感谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Eric    7 年前

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

    如果您真的希望格式“粘滞”,则需要操作数据本身(在您的示例中,通过将日期转换为按您希望的方式格式化的字符串,并舍入pi值),而不是格式化。