使用 openpyxl 将日期格式更改为 xlsx 中的文本

Changing date-format to text in xlsx using openpyxl

我写了一个脚本,它从 excel 个工作簿中读取并编写新的工作簿。 每行都是一个单独的对象,其中一列是日期。 我使用 datetime 将日期写为 NamedStyle 以获得我认为正确的格式:

    date_style = NamedStyle(name='datetime', number_format='YYYY-MM-DD')
    for row in range(2,ws_kont.max_row+1):
        ws_kont.cell(row = row, column = 4).style = date_style

问题是我需要将此 excel 工作簿导入到一个古老的数据库中,该数据库出于某种原因不接受日期格式,只接受这样的文本 "yyyy-dd-mm"。 我无法将这些单元格重写为文本。

我试过使用 =TEXT 公式,但这行不通,因为您不能使用单元格本身来计算结果,除非我复制列以在公式中引用:

name = str(ws_teg.cell(row = row, column = 4).coordinate)
date_f = "yyyy-mm-dd"
ws_kont[name] = "=TEXT(%s,%s)" % (name, date_f)

我需要在几个脚本中的很多地方执行此操作,所以我想知道是否有更简单的方法来执行此操作?

PS。我只是一名考古学家,试图通过涉足一些简单的代码来自动化我工作日的一些任务,如果我看起来有点慢,请放轻松。

很可能,仅更改日期的 格式 是不够的 - 您必须将日期存储为字符串而不是日期时间对象。

遍历该列并使用 datetime.strftime:

格式化日期
for row in range(1, ws_kont.max_row+1):
    cell = ws_kont.cell(row = row, column = 4)
    cell.value = cell.value.strftime('%Y-%m-%d')

发现另一篇用最少的代码运行良好的文章:

writer = pd.ExcelWriter('Sample_Master_Data_edited.xlsx', engine='xlsxwriter', 
                        date_format='mm/dd/yyyy', datetime_format='mm/dd/yyyy')